Go言語でコマンドラインツールを作ってみる

最近、Goでの開発をすることになったので色々と勉強していて、
どうせならコマンドラインツールも作れるようになろうと思ったので、簡単なCLIを作成してGithubに公開してみるというのをやってみました。

備忘録的なものですが、ぜひ最後までご覧ください。

まずはブランクリポジトリを作成する

特に方法はなんでもいいのですが、Githubに公開するので今回はghコマンドを使って空のリポジトリを作成しようと思うので、まずは下記のコマンドを実行します。

gh repo create

空のリポジトリを作成したら、

cd <ディレクトリ名>

でディレクトリを移動しgoプロジェクトの初期化を行います、

go mod init <モジュール名>

ディレクトリ内にgo.modファイルが生成されたのを確認し、IDEでディレクトリを開きます。
私は、VSCodeを普段から使用してますが、特になんでもいいです。

実行するとHello, Golang!と出力されるコマンドの実装

先ほど作成した、ディレクトリ内にmain.goを作成
下記を実装します。

package main

import "fmt"

func main() {
  fmt.Println("Hello, Golang!")
}

試しに、ターミナルから実行してみましょう。
カレントディレクトリにいるのを確認して下記コマンドを実行しましょう

go run .
# Hello, Golang! と出力されればOK

実装が問題なければ、リモートリポジトリにプッシュしましょう。

git branch
# mainに直接プッシュします
git add .
git commit -m "コミットメッセージ"
git push -u origin main

ついでにバージョニングのためにタグもつけておきます

git tag v1.0.0

git push --tags

実際にgo install でインストールして実行してみる

リモートリポジトリ上にプッシュしたら実際にインストールして使用してみましょう。
ディレクトリはそのままで大丈夫なので、ターミナルからインストールして実行します。

# githubからインストール
go install github.com/U5K492/hellogo@latest

hellogo
# Hello, Golang!と出力されればOK

無事出力されたでしょうか?
コマンドラインツールの作成の流れがつかめればあとは実装の中身をそれぞれ行えばおおよそは問題ないかと思います。

最後にgo installでインストールしたコマンドが不要になった場合下記のコマンドで削除できます

rm `go env GOPATH`/bin/hellogo

最後に

ざっくりとGoでのコマンドラインツールの作成の流れは掴めたでしょうか?
おおよそ実装の中身以外は今回の流れで問題ないと思いますので、ぜひ便利なツールを開発して公開してみてください。
最後までご覧いただきありがとうございました。

今後も日々の学びなどを発信していきますので、今後ともよろしくお願いいたします!

コメント

Copied title and URL