Go 言語のオーサリングツールの godzil を使ってみた
はじめに
Go 言語でプロジェクトをはじめるときに設定ファイルや Makefile
を既存レポジトリからコピーしていました。しかし、抜け漏れやいつまでも古い設定を引き継いでいくのもあまり良くないと思い、何かしらのオーサリングツールがないか探していました。
そこで
で godzil
を知ったので試してみました。
使ってみた感想と、現状作者の方のテンプレートしかないのですが、他の種類のテンプレート追加するにはどうすればよいかを調べてみました。
TL;DR
- Golang のオーサリングツールの Songum/godzil を使ってみた
- Songum/godzil で雛形を追加する方法を調べた (v0.2.3 での確認)
- Songum/godzil を
git clone
make devel-deps
で開発に必要なモジュールをインストールtestdata/assets/{雛形名}
配下に雛形を配置。テンプレートは Goのテンプレートが使えるmake assets
で新しい雛形追加したtestdata/assets
が入った状態のstatik/statik.go
を作成make build
でバイナリを作成- 作成したバイナリで
./godzil new -profile {雛形名} /path/to/repository
すると./repository
配下にtestdata/assets/{雛形名}
以下のテンプレートからファイルが生成される
- Songum/godzil を
使ってみた
インストール
macOS なので homebrew
でインストールします。
% brew install songmu/tap/godzil
モジュールの作成
モジュールを作成するディレクトリで new
します。
% godzil new github.com/noissefnoc/oreore
開発とかビルドとか
開発はお好きなように。ビルドはディフォルトの雛形に Makefile
が入っているので、それを使うことになります。
リリース
pull request ベース開発でマージコミット作成している開発フローが前提になっていますが
% godzil release
で semver
形式で新しいバージョン入力すると
- バージョンの更新
CHANGELOG.md
の更新- 新しいバージョンでタグ打って push
をしてくれます。
使った感想
雛形に関する個人の好みの問題ですが
.gitignore
にmake build
の生成物を入れておきたい- CLI 作るテンプレだとしたらフラグパーサのレイヤは
cli.go
みたいなので一段噛ませたい
あたりはパッと思いました。
error
系のモジュールは入ってるといいかとも思いましたが、バージョン追従のためにテンプレートを更新するのも、HEAD指定するのもどちらも微妙なので守備範囲にはしないほうがいい気がしました。
雛形の追加
v0.2.3 で確認しています。 今回は確認だけのためなので、ソース取ってきていじってます。
前準備
# ソースコードの取得 % git clone https://github.com/Songmu/godzil # 必要なモジュールをインストール % make devel-deps
雛形の作成と配置
ソースを読むと godzil new -profile {雛形名}
で testdata/assets/{雛形名}
配下の雛形を展開する仕様(ディフォルトはtestdata/assets/basic
) なので
となります。
雛形ファイルの更新
godzil
ではバイナリに静的ファイルを同梱するために rakyll/statik を使っているので statik/statik.go
に testdata/assets
配下のデータが書き込まれています。
雛形を追加したので、 statik/statik.go
を更新します。 Makefile
に更新のターゲットがあるので、それを利用します。
# statik/statik.go を更新 % make assets
ビルド
% make build
新しい雛形を使ったモジュールの作成
作成したバイナリ( ./godzil
) で
% ./godzil new -profile {雛形名} /path/to/repository
とすると ./repository
配下に testdata/assets/{雛形名}
以下のテンプレートからファイルが生成されます。
おわりに
雛形の整備をしてみて、しばらくは独自ビルドで追加して様子見てみようかなと思います。