Edited at

Goでコマンドラインツールを簡単に作成する方法

More than 3 years have passed since last update.

本エントリでは、cli.goというパッケージを使用して、コマンドラインツールを作成する方法を紹介する。


cli.goとは

cli.goとは、Go言語でコマンドラインツールを簡単に作成するためのパッケージである。


実行環境


  • Go 1.3

  • Mac OS X 10.9.3


cli.goをインストールする前の準備


環境変数$GOPATHの設定

$GOPATHを設定していない場合は、この設定が必須である。

$GOPATHは、go getコマンドでパッケージをインストールする際のインストール先を示す。


  • 例(bashの場合)

export GOPATH=$HOME/go # 指定するディレクトリは自由に決めてよい


環境変数$PATHの設定

この設定は必須ではないが、設定しておくのが望ましい。

go installコマンドを実行した際に作成されるバイナリは、$GOPATH/bin以下に置かれる。そのため、ここにパスを通しておくと、後々コマンドの実行が楽である。


  • 例(bashの場合)

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/binmycmdコマンドが作成される。


作成したコマンドの実行

$ 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"


の値がヘルプに反映されている。


参考リンク

cli.go