homebrew-caskの書き方とpull-requestの出し方
Mac使いならほとんどの人がお世話になっているHomebrew。 その拡張であるHomebrew Caskは以前なら別途インストールする必要があったが、色々ゴタゴタがあった末に本体に統合された模様。
僕は環境構築をできる限り自動化していてMacのプロビジョニングを行うにあたってはこれがないと結構面倒だ。もしHomebrew Caskのリポジトリに必要なCaskがなければ自分で作ってプルリクを出したら他にも幸せになる人がいるかもしれない。今回Windowsで使っていた3DモデリングソフトがいつのまにかMacに対応していたのでCaskに固めてみた次第。
Caskを作成する
まず最新のHomebrewが導入された状態で次のコマンドを実行する。hogehoge
は作成するCaskの名前に読み替えてほしい。
$ brew cask create hogehoge
するとhogehoge.rb
ができるのでこれに必要な情報を書き加えていく。
cask 'hogehoge' do version '' sha256 '' url '' name '' homepage '' app '' end
項目 | 内容 |
---|---|
version | アプリケーションのバージョンを指定する |
sha256 | 改ざんや破損検知のためSHA256でイメージやアーカイブのチェックサムを取る場合、ここにハッシュを入れておく。スキップする場合は:no_check シンボルを指定する。 |
url | ダウンロードするファイルのURL。CDNなどを利用していてhomepage で指定するドメインと異なる場合は# <ダウンロード先のドメイン> was verified as official when first introduced to the cask というコメントを一行上につけないとLintで弾かれる。 |
name | アプリケーションの名前を指定する。 |
homepage | アプリケーションのホームページを指定する。多くの場合はコーポレートサイトの製品ページなど。 |
app | .appファイルの名前を書いておくと.dmgがマウントされた後にこれが/Application にコピーされる。 |
Macのアプリケーションは様々なインストール手段があるので、app
では対応できないことがある。例えば.dmgの中身が.pkg形式のインストーラだった場合。appではなくpkgを使用する。
また、この場合uninstallの項目にベンダーのIDを指定する必要があるが、これはhomebrew-caskのリポジトリにあるスクリプトで確認できる。
$ ./developer/bin/list_recent_pkg_ids com.tetraface.Metasequoia.pkg com.microsoft.OneDrive-mac com.autodesk.mas.123ddesign com.agilebits.onepassword-osx com.microsoft.office.all.core.pkg.14.6.8.update com.microsoft.office.all.dcc.pkg.14.6.8.update com.microsoft.office.all.excel.pkg.14.6.8.update com.microsoft.office.all.fix_permissions.pkg.14.6.8 com.microsoft.office.all.outlook.pkg.14.6.8.update com.microsoft.office.all.powerpoint.pkg.14.6.8.update
最終的には以下のような状態になる。
cask 'hogehoge' do version '1.0.0' sha256 '0cd88d99379bdf8dfa42fd13ee970d8921f6d5eb3d892f76e4a7c76d68dc9e6d' # cdn.hogehoge.net was verified as official when first introduced to the cask url "https://cdn.hogehoge.net/download/Hogehoge-#{version}-Installer.dmg" name 'Hogehoge' homepage 'https://www.hogehoge.com/' pkg "Hogehoge-#{version}-Installer.pkg" uninstall pkgutil: 'com.pkg.hogehoge' end
プルリクを出す
結構ガイドラインが細かったりするので目を通しておいた方がいいが、プルリク時のテンプレートにチェックボックスが用意されていて基本的にはこれを満たしていれば問題ない。
brew cask audit --download {{cask_file}}
でエラーが出ないかどうかbrew cask style --fix {{cask_file}}
でエラーが出ないかどうか- コミットメッセージにCaskの名前とバージョンを記載しているか
- token referenceに沿って名前を付けているか
brew cask install {{cask_file}}
でエラーが出ないかどうかbrew cask uninstall {{cask_file}}
が正常に動くかどうか- すでに同じアプリケーションのプルリクが出ていたり過去に却下されていないか
本体のリポジトリにマージされるとbrew cask install hogehoge
でインストールできるようになるので、ansibleのplaybookには
homebrew_cask_packages: - { name: hogehoge }
とか書いておくと新型に買い換えたときの環境構築で幸せになれる。