homebrew-cask-fontsへのPR. RictyからHackGenへ移行
作ったPR
https://github.com/Homebrew/homebrew-cask-fonts/pull/1890
というわけで、homebrew-cask-fontsにPRして、こちらのHackGenを簡単にインストール(アップデート)できるようにしました。
https://github.com/yuru7/HackGen
https://qiita.com/tawara_/items/374f3ca0a386fab8b305
$ brew tap homebrew/cask-fonts
$ brew cask install font-hackgen
簡単ですね。HackGen使いたい人はこれで終わりです。
以降はPRした話です。
Rictyが403 Forbiddenでインストールできない
tapして https://github.com/sanemat/homebrew-font を使えるようにして、brew install rictyすると思いますが、どうやら2019/10現在、Rictyを生成するスクリプトが消えているようですね。
$ brew install ricty
==> Installing ricty from sanemat/font
==> Downloading http://www.rs.tus.ac.jp/yyusa/ricty/ricty_generator-4.1.0.sh
==> Downloading from https://www.rs.tus.ac.jp/yyusa/ricty/ricty_generator-4.1.0.sh
curl: (22) The requested URL returned error: 403 Forbidden
Error: An exception occurred within a child process:
DownloadError: Failed to download resource "ricty"
Download failed: http://www.rs.tus.ac.jp/yyusa/ricty/ricty_generator-4.1.0.sh
yyusaという方が作ったようですが、今現在は理科大(tus.ac.jp)所属ではないようですね。現在は電通大の助教らしいです。
http://kjk.office.uec.ac.jp/Profiles/76/0007581/profile.html
所属が変わったからyyusa/rictyが消えたんですかね・・・
初めからGitHubで頼むって感じですが、どうやら初めはGitHubだったけど一悶着あって、理科大のサーバ下に置くようにしたっぽいですね。気になる方はどうぞ
GitHub の Ricty リポジトリ閉鎖騒動
ちなみにbrewでインストールできなくなっただけで、Ricty生成スクリプトは色々なところに転がっているので、どうしてもRictyが良い方はそれらのスクリプトを実行すれば良いかと思います。
Rictyの代わりにHackGenを選択
消えたので今後メンテされない気もするし、他にも良さげなフォントがあったので乗り換えることにしました。HackGenというものが良さそうだったのでそちらを選択。
ただし、Homebrewで入れることができません。別にbrewがなくてもインストールは簡単なのですが、brewで管理したい人も一定数いるだろうからPRすることにしました。
で、作ろうと思ったんですが、既にPRされているものを発見。
https://github.com/Homebrew/homebrew-cask-fonts/pull/1839
これはありがたい、実はもう既にbrewでインストールできるのか?と思ったんですが、どうやらPRが不完全だし、放置されたと見なされてCloseされたようですね・・・。残念。
ちなみにこのPRがRejectされた理由は以下です。
- PRのテンプレート(PULL_REQUEST_TEMPLATE.md)があるにも関わらず、消している
- CIが通っていない(urlとhomepageのドメインが違っており、違うことを説明するためのコメントがない)
ちなみにGitHubのテンプレートの機能はこちらの記事が参考になります。
https://qiita.com/nyamogera/items/3fe6985b45fbd5377184
実際にPRする
homebrew-cask-fontsはかなりしっかりと管理されたリポジトリです。こういうところにPRする場合はコードの理解・作成も大事ですが、CONTRIBUTION.mdを読むことが大事です。これに従ってPRしないとRejectされたり、コミッターがキレたりします。知り合いのコミッターは読まないやつ多すぎって怒ってました・・・
というわけでこれを
https://github.com/Homebrew/homebrew-cask-fonts/blob/master/CONTRIBUTING.md
読みながらやるわけですが、英語だと流石にきついですね。理解に時間がかかりました。
Rubyコードを作るわけですが、Automatic Generationの節にある通り、ある程度は自動生成ができます。Font(ttfなど)が入ったzipを用意して、それを引数にfont_caskerを実行することで標準出力にRubyコードが出力されます。
sha256はDLするzipのhashです。auto genすれば勝手に埋まっていると思いますが、以下で手動算出もできます。
https://github.com/Homebrew/homebrew-cask/blob/master/doc/cask_language_reference/stanzas/sha256.md
urlはfontの入ったzip、今回の場合、GitHub releaseのDL URLを入れます。
appcastはATOM(RSS)のURLを入れます。
nameはFontの名前を、homepageはホームページですね。今回の場合、GitHubのrepoのHomeを。
fontは相対パスでzipの中身のフォントファイルを列挙します。これは自動生成されますね。
Naming Font Casksの節に注意が必要です。今回のHackGenの場合font-hackgen.rbなのかfont-hack-gen.rbなのか、人によって迷うかと思います。そのルールが定められています。
ルールに従えばfont-hackgen.rbが正解です。
これでRubyファイルはできましたがまだあります。次はPRするときのチェック項目を見ます。
https://github.com/Homebrew/homebrew-cask-fonts/blob/master/.github/PULL_REQUEST_TEMPLATE.md
brew cask audit —download {{cask_file}}などでエラーがないことをチェックしたか? とかいくつか聞いているので、これに従って実行します。
最後にPRを作ります。作るときにテンプレートのテキストが出てくるので、特に変えずにPRを作成します。auditの確認などで成功したものはcheckboxをONにしていきます。PR後のCI結果もチェックして何か違反があれば修正します。
自分は「Checked the cask is submitted to the correct repo.」の意味がわからなかったのですが、これが未チェック状態でもMergeしてくれました。
「caskは正しいリポジトリにサブミットされたことを確認した」というチェック事項ですけど、PRするリポジトリ間違えるかー?と疑問でした。いまだに意図がよくわかっていません。このあたりHomebrew cask本体の方を学ぶとわかるのかなあ。
なんにせよ以上の通りやればmergeされます。何かFontを追加したいときは参考にしてみてください。
以上です。