Courier is a simple way of organising and fetching external source code into a project.
It lets you define a manifest of paths to dependencies. It will fetch dependencies and organise them in your project. Dependencies can be pinned to a revision, and subdirectories of the project can be referenced.
This is useful for projects that have source-level dependencies, build
Dependencies are defined in a deps.json
file, e.g.
{
"src/github.com/optiver/killerdinosaurs": {
"vcs": "git",
"url": "https://github.com/optiver/killerdinosaurs.git",
"ref": "master"
},
...
}
- Create a
deps.json
. - Run
courier
. - Check-in
deps.json
andpins.json
(created by courier) - To obtain the exact same dependencies later, run
courier --reproduce
.
TODO - do releases from github.
$ go get github.com/optiver/courier
Copy the binary (named bin/courier
in Linux or bin/courier.exe
in Windows)
to somewhere in your path.
- Do one thing and do it well.
- Language and VCS agnostic.
- Obvious behaviour by default.
- Simple manifest.
- Obey the principal of least astonishment.
Courier is:
Copyright [2016] [Optiver]
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.