Open4

Go CLIツールを作る

yotto428yotto428

調査編

比較

選定

yotto428yotto428

spf13/cobraでCLIツールを作る①

フォルダ作成

# CLIツールの名前付けたフォルダ作成
$  mkdir -p goclitest
$  cd goclitest

# go.mod作成
$ go mod init goclitest

# cobraのインストール
$ go get github.com/spf13/cobra
$ go get github.com/spf13/viper

# コマンドのボイラーテンプレートを作成。
# viper=falseにすれば設定ファイル読み込み機能無しのシンプルなものになる。
$ cobra init --pkg-name goclitest --viper=true

# bundle install的なやつぽい。依存関係周り解決してくれるぽい。
$ go mod tidy

kubectlを真似してみる

参考になりそうなリンク

yotto428yotto428

spf13/cobraでCLIツールを作る②

kubectlを真似るのはよく分からなかったので、まずシンプルに作ってみる

GoのInterface

yotto428yotto428

package編

  • package内で定義する関数の先頭が小文字か大文字かでアクセサビリティが変わる

自作package管理

├── cmd
│   └── root.go
├── go.mod
├── go.sum
├── LICENSE
├── main.go
└── system
     └── system.go

こういう構成の場合、cmd/root.go内でsystem/system.goを参照したい場合は、importすればいい。

root.go
package cmd

import (
	"goclitest/system"
)
...