⌨️

go/cobraでコマンド作りたいんだけど、最近の記事だと出来ない件

2022/04/08に公開

ググってもできねぇ

go/cobraで以前コマンドつくったんですが、どうやったっけ?って思ってググって記事をいくつも読んで試したんですが、

ま、いずれこの記事もそうなるかもしれないですが、一応この記事時点でcentos9に設置できたんでその設定事例を..

パスを通す

まずgoのコマンドを打つうえで、そのログインアカウントの.bash_profileが整っているかです。

$ vi ~/.bash_profile

# 「~/go/bin」を追加してください
PATH=~/go/bin:$PATH:$HOME/bin:/usr/bin
export PATH

source ~/.bash_profile

こうします。

echo $PATH

で追加されてたらOK、これでGOで作ったコマンドここにできてるんで、パスなしで実行できます。

cobraで

そしてつくりたいコマンドのディレクトリを作ります。

$ mkdir cmdHello; cd ./cmdHello

最新は1.4言うんですが、でも多分なんかエラーでて違う
cobra@v1.4.0
1.3とか1.2.1とか指定すると上手くいきます。まずこの時点で躓きポイントかな。バージョンを指定しないとアカンくなったのかなと思います。

$ go get -u github.com/spf13/cobra/cobra@v1.3.0

$ cobra

ができるはずです。これができないと「.bash_profile」の設定が上手く行っていないという事です。

$ go mod init cmdHello
$ cobra init

これで、cmdHelloっていうコマンドの初期テンプレ階層が設置されます。
go init に「cobra init cmdHello」こんなかんじでモジュール名を追加するとディレクトリ階層になります。よう分からん方は、試しに打って消せばわかります。

はい、cobraのプログラムどう書くの?っていうのは沢山記事がヒットしますので割愛します。
で、完成したとします。たとえば

$ go run main.go arg1 arg2

みたいに動くのを確認出来たら、いよいよ「goでコマンド作りたいんだけど」です。

いざ、コマンド

$ go install
$ go build

はい、以上です。

$ ll ~/go/bin

これで確認すると、ありますよね。作ったコマンド。

$ whereis tsukuttacommand

で、出てきますよね!そうです。もうできました。
ここまで書ききってくれる記事ってないので書きました。

$ tsukuttacommand
Bye Bye!

Discussion