LoginSignup
52
52

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-06-25

本エントリでは、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

52
52
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
52
52