Cobra を使う
Cobra Generatorで階層化されたサブコマンドが簡単につくれる
https://qiita.com/minamijoyo/items/bb21a111882cb81213ab
$ go get github.com/spf13/cobra/cobra
デフォルトのライセンスを設定
$ cat > ~/.cobra.yaml << "EOS"
author: mamemomonga <[email protected]>
license: MIT
EOS
GOPATH/src の中に作成される。この場所にmainが設置される。
mainの場所はいろいろあるが、バイナリと同じ名前のディレクトリを作るのがよさそうだ。
$ cobra init github.com/mamemomonga/notebook-go/cli/cobra/subcommands
$ cd $GOPATH/src/github.com/mamemomonga/notebook-go/cli/cobra/subcommands
サブコマンドを作る
$ cobra add cmd1
$ cobra add cmd2
$ cobra add cmd3
サブコマンドのサブコマンドを作る
$ cobra add -p cmd1Cmd cmd11
$ cobra add -p cmd1Cmd cmd12
cmd1のみが実行されたときはヘルプがでるようにしたい。その場合は var cmd1Cmd の Runを消せば良い なおデフォルトの場合はfmtも使われなくなるのでこれも消す必要がある。
$ vim cmd/cmd1.go
ビルドと実行
$ go build
$ ./subcommands
$ ./subcommands cmd1
$ ./subcommands cmd1 cmd11
$ ./subcommands cmd1 cmd12
$ ./subcommands cmd2
$ ./subcommands cmd2 --help