🍺

Homebrewでtapを作って自作ツールを配布するための必要十分条件

2024/12/20に公開

awscurl-rs を作った時に色々調べたのでメモ。Homebrewで入れられる自作ツールを作りたい方へ

なぜこれを書いたのか

要は公式のガイドを読めば良いんですが、この手順には過剰な部分があります。実際のところどこまでが必要条件で、どこまで従う必要があるのかを明確にするために書きます。

手順

バイナリをダウンロードできる状態にする

公式のガイド通りGitHubのReleaseに保存しておくのが一番楽だと思いますが、インターネット経由でダウンロードできさえすれば他の方法でも良いはずです。(パブリックなS3に保存する等)

tap用のGitHubレポジトリを作る

参考
https://github.com/1hakusai1/homebrew-1hakusai1

ここがtap及び格納されているformulaの情報源になるので、もちろんパブリックである必要があります。レポジトリ名が重要でhomebrew-[tapname]である必要があります。

公式のガイドではbrew tap-new USER/REPOSITORYを実行しろと書いてありますが、これはローカルにtapの元となるレポジトリをinitするだけです。必ずしもtap-newでレポジトリを作る必要はなく、命名規則を満たす公開レポジトリが作れればお好みの方法で構いません。

formulaの定義を書いたrubyファイルをレポジトリに入れる

参考
https://github.com/1hakusai1/homebrew-1hakusai1/blob/main/Formula/awscurl-rs.rb

公開したレポジトリのFormula/[formula-name].rbにクラス定義を配置します。↑は最小構成。他にもテストやらビルド方法やらを設定することもできます。homebrew-coreに例は無限にあるので、参考資料には困りません。

注意するポイントはsha256チェックサムをちゃんと計算することと、クラスの命名規則でしょうか。Formula名がケバブケースやスネークケースである場合はキャメルケースに変換する必要があります。

インストール

ここまで用意すれば、あとは

brew tap 1hakusai1/1hakusai1
brew install awscurl-rs

みたいな感じでインストールできます。

Discussion