Awesome
Goop
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
.
Getting Started
-
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 !git@github.com: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
).
Other commands
-
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
.
Caveat
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.<br> This software is licensed under the MIT License.