r7km/s

r7kamura per second.

Go misc

2014-06-23

Golang初学者のGolangに関する雑多なメモ。

Godep

GodepはRubyで言うところのBundlerみたいなもので、 依存関係の定義と解決を行ってくれる。 godepはgo getを利用してインストールできる。 GodepというファイルにJSON形式で依存関係を記述し(≒Gemfile)、 godep getで依存ライブラリをインストールする(≒bundle install)。 例えばGoのプロジェクトflynn/discoverdのGodepsを利用してみる。

$ go get github.com/tools/godep
$ cd $GOPATH/src/github.com/flynn/discoverd
$ cat Godep
{
  "ImportPath": "github.com/flynn/discoverd",
  "GoVersion": "go1.2.1",
  "Deps": [
    {
      "ImportPath": "github.com/coreos/go-etcd/etcd",
      "Comment": "v0.2.0-rc1-98-gd88f477",
      "Rev": "d88f477a542c781eb9ad18ce82b3a0b9b6e2d07e"
    },
    {
      "ImportPath": "github.com/flynn/go-flynn/attempt",
      "Rev": "3743ca1e0e1cff877b906dd56983f57699b2cc7d"
    },
    {
      "ImportPath": "github.com/flynn/rpcplus",
      "Rev": "05df3d30b6e55f5b440c1a78e2f83cb822bc0d76"
    }
  ]
}
$ godep get

godep getにより、Depsの項目に記述されたレポジトリが取得される。 godep goというコマンドを使うと、依存関係を解決した状態で続くコマンドを実行してくれる。 内部では一時的にGOPATHをどこかに変更することでこれを実現しているらしい。