Go

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

More than 1 year has 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