monoの開発ブログ

retool で golang の周辺ツールの vendoring

golang における依存関係の管理は、golang 本体の vendoring 対応やオフィシャルの依存関係管理ツールである dep の登場によってかなりいい感じになりつつあります。しかし、dep で管理できるのはあくまでもコードから参照するライブラリのみであり、npm でいう devDependencies に含めるような周辺ツールのバージョンを管理することはできません。

このことは dep の Issue にもなっており、将来的には改善されるかもしれませんが、現状使えるツールとして retool を試してみました。 retool は実行ファイルの vendoring を行うシンプルなツールで、ツール類のバージョンを固定する機能や、実行ファイルをプロジェクトのディレクトリ以下の _tools/bin に配置する機能を持っています。 この手のパッケージマネージャを使ったことがあればすぐに使えると思います。

わざわざ説明するまでもないレベルですが、retool add でパッケージを tools.json に追加しつつインストールできて、retool do でインストールしたコマンドを実行できます。

retool add github.com/jteeuwen/go-bindata/go-bindata origin/master
retool do go-bindata -pkg testdata -o ./testdata/testdata.go ./testdata/data.json

tools.json の内容でパッケージをインストールしたい場合は retool sync を実行します。

retool sync

retool が決定版的なツールかというとそういうわけではないでしょうが、dep が対応したとしてもその時移行すればいい程度の話なので、自分で頑張るよりはサクッと retool に任せてしまうのが楽だと思いました。