本エントリでは、cli.goというパッケージを使用して、コマンドラインツールを作成する方法を紹介する。
cli.goとは
cli.goとは、Go言語でコマンドラインツールを簡単に作成するためのパッケージである。
実行環境
- Go 1.3
- Mac OS X 10.9.3
cli.goをインストールする前の準備
環境変数$GOPATH
の設定
$GOPATH
を設定していない場合は、この設定が必須である。
$GOPATH
は、go get
コマンドでパッケージをインストールする際のインストール先を示す。
- 例(bashの場合)
.bashrc
export GOPATH=$HOME/go # 指定するディレクトリは自由に決めてよい
環境変数$PATH
の設定
この設定は必須ではないが、設定しておくのが望ましい。
go install
コマンドを実行した際に作成されるバイナリは、$GOPATH/bin
以下に置かれる。そのため、ここにパスを通しておくと、後々コマンドの実行が楽である。
- 例(bashの場合)
.bashrc
export PATH=$PATH:$GOPATH/bin
cli.goのインストール
$ go get github.com/codegangsta/cli
コード
$GOPATH/src/mycmd/
ディレクトリに、以下のファイルを作成する。
mycmd.go
package main
import (
"os"
"github.com/codegangsta/cli" // cli.goをインポート
)
func main() {
app := cli.NewApp()
app.Name = "mycmd" // ヘルプを表示する際に使用される
app.Usage = "print arguments" // ヘルプを表示する際に使用される
app.Version = "1.2.3" // ヘルプを表示する際に使用される
app.Action = func(c *cli.Context) { // コマンド実行時の処理
println("Number of arguments is", len(c.Args()))
println("Fisrt argument is", c.Args()[0])
println("Second argument is", c.Args()[1])
}
app.Run(os.Args)
}
コンパイル
$GOPATH/src/mycmd/
ディレクトリで、以下のコマンドを実行する。
$ go install
これで、$GOPATH/bin
にmycmd
コマンドが作成される。
作成したコマンドの実行
$ mycmd aaa bbb
実行結果は、以下のとおり。
Number of arguments is 2
Fisrt argument is aaa
Second argument is bbb
作成したコマンドのヘルプを表示する
$ mycmd help
実行結果は、以下のとおり。
NAME:
mycmd - print arguments
USAGE:
mycmd [global options] command [command options] [arguments...]
VERSION:
1.2.3
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--version, -v print the version
--help, -h show help
コード中の
app.Name = "mycmd"
app.Usage = "print arguments"
app.Version = "1.2.3"
の値がヘルプに反映されている。