GoReleaser 2.10 から、Homebrew Formula のリリースを非推奨とし、代わりに Homebrew Cask をリリースする機能が推奨されるようになった。
社内で配布していた Private な Formula も Cask に移行しようとしたら色々足りないものがあることがわかったので、 いろいろコードを継ぎ足して Private Repository でリリースされているツールも Homebrew Cask でインストールできるようにした。
Cask DSL バトル
GoReleaser は yaml で入力した設定をベースとして Templating で Ruby コードを生成しているので、 表現力の高すぎる DSL はサポートできなかった。
Cask Cookbook をよく読んでみたら Cask 定義の中に任意の Ruby コードを含めていいらしいので、
複雑すぎる DSL をサポートしない代わりに custom_block という建付けで任意コードを追加して使う形で事なきを得た。
https://docs.brew.sh/Cask-Cookbook#arbitrary-ruby-methods
Documantation
Private Repository サポートのリリース後すぐにこの機能を利用してくれた方がいて、サンプルコードにいくつか問題点があることがわかったのでもう少し修正した。 ありがとうございました。
所感
Go も Homebrew も不慣れだったので何個かやらかしもあったが、なんとかなった。 つい先日だが、今現在公式サイトで公開されているこちらのサンプルコードで社内で配布していた Formula も無事 Cask に移行できた。
おわり
おわり