MInor CoNtrol

プログラミング, etc.

golangでCLIツール作成 事始め

TL;DR

aa

ベース作り

標準のflagパッケージを使っても良いが、今回はサードパーティurfave/cliを使った。
公式のREADME.mdを読んだだけで簡単に作れるのは素晴らしい。

一部抜粋・省略だが、こんな感じ。オプションは取らず、サブコマンドを利用する構成にしてみた。

補完

gifにもあるが、zsh環境下でサブコマンドの補完が効くようにした。gifの表示は.zshrcの設定で見やすくフォーマットしてある。

ディレクトリ構成

サブディレクトリとしては、サブコマンドパッケージのcmdCLIツール実行・設定などのためのcli、補完ファイル用のcompletionとした。

.
├── LICENSE
├── README.md
├── cli
│   └── run.go
├── cmd
│   ├── detective.go
│   ├── pig.go
│   ├── root.go
│   └── wktk.go
├── completion
│   └── zsh
│       └── _aa
└── main.go

最後に

golangでもCLIツール作成は

みんなのGo言語【現場で使える実践テクニック】

みんなのGo言語【現場で使える実践テクニック】

にも書いてあったとおり、非常にお手軽だった。
また、README.mdにも書いてあるが、mattn/memob4b4r07/gistは非常に参考になった。
今回は全く非実用的なものを作ったが、これから実用的なツールを作るのには勉強になった。

参考