YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

genv 0.3.2をリリースしました

はじめに

こんにちは、Go界の稲葉義男です。昨年末にgenvというGoのワークスペース管理ツールを公開しましたが、地味に機能アップデートを行ったのでご紹介します。

レポジトリ

レポジトリはこちらです。インストール方法はREADMEを参照してください。

新機能 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

感想とかバグ報告とか

ぶっちゃけPython系の開発環境で得た知見のみを元にして開発を行なっていますが、他の言語の開発環境管理ツールに触れている多くの方々から色々な意見をいただけたら幸いです。
レポジトリのissue trackerか、私までご連絡ください。

*1:gitやgawkと同じノリです