ChangeLog - noissefnoc

日々のChangeLog。趣味のコードとかの話

Go 言語のオーサリングツールの godzil を使ってみた

はじめに

Go 言語でプロジェクトをはじめるときに設定ファイルや Makefile を既存レポジトリからコピーしていました。しかし、抜け漏れやいつまでも古い設定を引き継いでいくのもあまり良くないと思い、何かしらのオーサリングツールがないか探していました。

そこで

www.songmu.jp

godzil を知ったので試してみました。

使ってみた感想と、現状作者の方のテンプレートしかないのですが、他の種類のテンプレート追加するにはどうすればよいかを調べてみました。

TL;DR

  • Golang のオーサリングツールの Songum/godzil を使ってみた
  • Songum/godzil で雛形を追加する方法を調べた (v0.2.3 での確認)
    • Songum/godzilgit 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/{雛形名} 以下のテンプレートからファイルが生成される

使ってみた

インストール

macOS なので homebrew でインストールします。

% brew install songmu/tap/godzil

モジュールの作成

モジュールを作成するディレクトリで new します。

% godzil new github.com/noissefnoc/oreore

開発とかビルドとか

開発はお好きなように。ビルドはディフォルトの雛形に Makefile が入っているので、それを使うことになります。

リリース

pull request ベース開発でマージコミット作成している開発フローが前提になっていますが

% godzil release

semver 形式で新しいバージョン入力すると

  • バージョンの更新
  • CHANGELOG.md の更新
  • 新しいバージョンでタグ打って push

をしてくれます。

使った感想

雛形に関する個人の好みの問題ですが

  • .gitignoremake 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 ) なので

  • testdata/assets/{雛形名} ディレクトリを作成
  • testdata/assets/{雛形名} ディレクトリ以下に Go テンプレート形式の雛形ファイルを作成・配置

となります。

雛形ファイルの更新

godzil ではバイナリに静的ファイルを同梱するために rakyll/statik を使っているので statik/statik.gotestdata/assets 配下のデータが書き込まれています。

雛形を追加したので、 statik/statik.go を更新します。 Makefile に更新のターゲットがあるので、それを利用します。

# statik/statik.go を更新
% make assets

ビルド

% make build

新しい雛形を使ったモジュールの作成

作成したバイナリ( ./godzil ) で

% ./godzil new -profile {雛形名} /path/to/repository

とすると ./repository 配下に testdata/assets/{雛形名} 以下のテンプレートからファイルが生成されます。

おわりに

雛形の整備をしてみて、しばらくは独自ビルドで追加して様子見てみようかなと思います。