おそらくはそれさえも平凡な日々

godzilというGoのオーサリングツールを作っている

https://github.com/Songmu/godzil

Goのモジュール作成と、リリースをサクッとできる君が欲しくて作っている。作りかけだけど、すでに便利に使ってはいます。インターフェースは結構変わる可能性はあります。名前の通りかなりMinillaインスパイアです。

モチベーションとしては以下。

  • リポジトリ作る際に毎回適当な既存リポジトリからコピペするのに飽きた
  • Go Modules時代になりツールじゃないライブラリもタグ管理した方が良さげになってきたのでリリース管理したい

今のところの使いかた

モジュールの作成

% godzil new github.com/Songmu/oreore

scaffoldingされて、git init && git add . される。あとは適当にremoteリポジトリを登録して開発してください。今のところGitHub or GHEで開発する前提になってます。

リリース

% godzil release

semver形式でリリースバージョンを聞かれるので入力します。以下のことをやってくれます。

  • バージョン番号のbump
  • CHANGELOG.md 自動生成
    • pull requestベースで開発して、マージコミットを作る形でマージしている場合
  • git tag
  • git push && git push --tags

逆にツールのビルドはおこなわないのでそこは適宜別の仕組みを利用する形です。リリースフックの仕組みなどは用意するかも知れません。

今後の展望

まだ、僕のオレオレツール感が強いのですが、試しに使って意見をいただけると嬉しいです。以下の機能追加などを考えています。

  • scaffold時のテンプレートを選べるように
    • 現状一パターンのみでかなり僕の色が強い
  • ドキュメンテーション周り強化
    • README.mdからdoc.goの自動生成とかやりたいけど表現力が違うので難しそう
  • リリースバージョンの自動決定
    • motemen/gompatible みたいなの使って、非互換だったらメジャー、機能追加だったらマイナー、それ以外はパッチ、などできるとかっこいい

余談

前のエントリで、取り上げたstatikは、実はこのgodzilで使いたかったというのがあります。ちなみに、godzil内部で使っているScaffoding用のライブラリで gokoku というものも作っています。

https://github.com/Songmu/gokoku

あるファイルツリーを元に、それ配下のファイルをGoのテンプレートに見立てて、一律指定位置に書き出してくれるものです。

そのために gokoku.Tmpl っていうtypeを定義しています。今後は gokoku.Hojo というのも定義したいですね。…はい。

created at
last modified at

2019-03-24T18:08:56+0900

comments powered by Disqus