A dependency manager for Go (golang), inspired by Bundler. It is different from other dependency managers in that it does not force you to mess with your GOPATH
.
-
Install Goop:
go get github.com/nitrous-io/goop
-
Create
Goopfile
. Revision reference (e.g. Git SHA hash) is optional, but recommended. Prefix hash with#
. (This is to futureproof the file format.)Example:
github.com/mattn/go-sqlite3 github.com/gorilla/context #14f550f51af52180c2eefed15e5fd18d63c0a64a github.com/dotcloud/docker/pkg/proxy #v1.0.1 // comment github.com/gorilla/mux [email protected]:nitrous-io/mux.git // override repo url
-
Run
goop install
. This will install packages inside a subdirectory called.vendor
and createGoopfile.lock
, recording exact versions used for each package and its dependencies. Subsequentgoop install
runs will ignoreGoopfile
and install the versions specified inGoopfile.lock
. You should check this file in to your source version control. It's a good idea to add.vendor
to your version control system's ignore settings (e.g..gitignore
). -
Run commands using
goop exec
(e.g.goop exec make
). This will execute your command in an environment that has correctGOPATH
andPATH
set. -
Go commands can be run without the
exec
keyword (e.g.goop go test
).
-
Run
goop update
to ignore an existingGoopfile.lock
, and update to latest versions of packages (as specified inGoopfile
). -
Running
eval $(goop env)
will modifyGOPATH
andPATH
in current shell session, allowing you to run commands withoutgoop exec
.
Goop currently only supports Git and Mercurial. This should be fine for 99% of the cases, but you are more than welcome to make a pull request that adds support for Subversion and Bazaar.
Work on awesome golang projects, like Goop, at Nitrous.IO
Copyright (c) 2014 Irrational Industries, Inc. d.b.a. Nitrous.IO.
This software is licensed under the MIT License.