Goのリポジトリを初期化するためのスクリプト
Go の勉強を開始していてプロジェクトの初期設定をサクッとつくるスクリプトというか bash alias を作りました。
# きっかけ
勉強のためいくつもディレクトリを分けてmain.go
を書いていたものの、いちいち最初から手書きするのが面倒になってきたためです。
とりあえず main 関数の入ったmain.go
と最低限のgo.mod
があればよいのかな?という感じで、それらを生成するスクリプトを作りました。
# つくったもの
以下をシェルの設定に追加しました。
goinit
で実行します。
goinit() {
if [ -f main.go ]; then
echo "main.go is already exists!"
return 1
fi
echo -e "package main\n\nfunc main() {\n\n}" > main.go
go mod init "$((git config --get remote.origin.url || basename `pwd`) | sed -e 's#https\?://##')"
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- 実行したディレクトリに
main.go
が存在したら終了します main.go
がなければ、以下の内容で作成します
package main
func main() {
}
1
2
3
4
5
2
3
4
5
go mod init reponame
を実行します- git リポジトリでなければカレントディレクトリ名をモジュール名に使います
https://
が入っているとコケるのでsed
で除去しています
# 改善点
以下のような点は今後修正していくと思います。
- モジュール名は引数としても受け取れたほうが良いかも
main.go
があってgo.mod
がない場合とかにも対応できたほうが良いのでは?- 他に必要な物があれば足す
# まとめ
こういうものは既にたくさんあると思いますが自分用にミニマルに作りました。
あと、ghq
のディレクトリを$GOPATH
配下に置くべきなのかとか悩んでいたのですが、現在のバージョン(1.16)ではそのへんは考慮しなくて良いみたいですね。
Go は新しい概念がいろいろ多くて楽しいです。今後も楽しんでいきます。
Prev
Go勉強始めました