お雑煮研究会

好きな焼肉は魚

Private Repository で開発されている Go ツールを GoReleaser で Homebrew Cask としてリリースできるようにした

GoReleaser 2.10 から、Homebrew Formula のリリースを非推奨とし、代わりに Homebrew Cask をリリースする機能が推奨されるようになった。

goreleaser.com

社内で配布していた Private な Formula も Cask に移行しようとしたら色々足りないものがあることがわかったので、 いろいろコードを継ぎ足して Private Repository でリリースされているツールも Homebrew Cask でインストールできるようにした。

Cask DSL バトル

docs.brew.sh

GoReleaser は yaml で入力した設定をベースとして Templating で Ruby コードを生成しているので、 表現力の高すぎる DSL はサポートできなかった。

Cask Cookbook をよく読んでみたら Cask 定義の中に任意の Ruby コードを含めていいらしいので、 複雑すぎる DSL をサポートしない代わりに custom_block という建付けで任意コードを追加して使う形で事なきを得た。

https://docs.brew.sh/Cask-Cookbook#arbitrary-ruby-methods

github.com github.com

Documantation

Private Repository サポートのリリース後すぐにこの機能を利用してくれた方がいて、サンプルコードにいくつか問題点があることがわかったのでもう少し修正した。 ありがとうございました。

zenn.dev

github.com

所感

Go も Homebrew も不慣れだったので何個かやらかしもあったが、なんとかなった。 つい先日だが、今現在公式サイトで公開されているこちらのサンプルコードで社内で配布していた Formula も無事 Cask に移行できた。

goreleaser.com

おわり

おわり