はじめに
こんにちは、Go界の稲葉義男です。昨年末にgenvというGoのワークスペース管理ツールを公開しましたが、地味に機能アップデートを行ったのでご紹介します。
新機能 freeze, install
Pythonのパッケージ管理ツールであるpipでは、現在のPythonの環境にインストールされているパッケージの一覧を表示するfreezeという機能があります。
それと同等の機能をgenvに追加しました。次のような形で、現在のGOPATH配下のソースコードが依存している3rd partyパッケージを一覧で表示します。
% genv -freeze bitbucket.org/zombiezen/gopdf/pdf code.google.com/p/draw2d/draw2d code.google.com/p/draw2d/postscript code.google.com/p/draw2d/wingui code.google.com/p/freetype-go/freetype ...
またこの結果をもう1つの新機能installに渡すことによって、go getを複数のパッケージに対して行うことが可能になります。
% genv -freeze > requirements.txt % genv -install requrements.txt [1/12] installing 'bitbucket.org/zombiezen/gopdf/pdf' ... done. [2/12] installing 'code.google.com/p/draw2d/draw2d' ... done. [3/12] installing 'code.google.com/p/draw2d/postscript' ... already installed. [4/12] installing 'code.google.com/p/draw2d/wingui' ... already installed. [5/12] installing 'code.google.com/p/freetype-go/freetype' ... already installed. ...
'goof' コマンド
またコマンド数が増えたので、0.2系までではgenvwrapper.shが別々のコマンドとして提供していた機能をすべて、goofというコマンドのサブコマンドとしてまとめました。
なおgoofという名前は響きだけで決定したのですが、「まぬけ」とかそういう意味があります。*1
コマンド一覧は次のとおりです。こちらに関しても詳しい使い方はREADMEを参照してください。
% goof usage goof -- genv wrapper for goofy gophers usage: goof make [genv options] <envname> goof workon <envname> goof remove <envname> goof show goof freeze goof install <filename> a list of goof commands: make Create a new Go workspace workon Switch the environment to specified workspace remove Delete a specified workspace show Show a list of existing workspaces freeze Show all depending external packages in all Go sources under directories in GOPATH install Bulk 'go get' packages listed in given text file into GOPATH/src