Module::Setupをgo moduleのセットアップにも使っている話
この記事は、"Perl Advent Calendar 2023" 9日目の記事です。
Module::Setup という Perl モジュールのボイラープレートを作成するモジュールがあります。module-setup
というコマンドでモジュールをテンプレートから作成することができます。
私はこの Perl製の module-setup を go module を書くときにも使っています。
Module::Setup には Flavor というボイラープレート群を複数管理する仕組みがあるので、Golang 用の flavor を作成して利用しています。Module::Setup の flavor まわりは CPAN などでドキュメントをご覧ください。ググれば記事もみつかります。注意点としては、これから Module::Setup を使いはじめようとすると、テストがこけるので force install しないといけないということくらいです。
Go用 Flavor
というわけで私の Go用ボイラープレートは以下のようにすると手に入ります。
curl -L https://gist.githubusercontent.com/bayashi/7de519d16b38d167a1001056947f4479/raw/aed552951777492107874520dee1f571d7ff4c91/go-tmpl.patch -o /tmp/go-tmpl.patch
mkdir your_flavor
cd your_flavor
patch -p1 < /tmp/go-tmpl.patch
無事適用されると以下のようなファイル構成になります。
$ tree -a
.
├── additional
│ └── config.yaml
├── config.yaml
├── plugins
│ └── Golang.pm
└── template
├── .github
│ └── workflows
│ ├── run-staticcheck.yaml
│ └── run-tests.yaml
├── .gitignore
├── LICENSE
├── README.md
├── go.mod
└── main.go
config.yaml
というファイルだけ開いて Author などの項目を編集してください。
まとめ
Go用のボイラープレート作成ツールは Goで書かれた新しいものも存在するので、これからツール自体新しく導入するならそっちを使った方が良いかもしれません。
とはいえ、Module::Setup は非常に便利ですね、という話でした。