つかびーの技術日記

(情報)工学修士, 元SIer SE, 現Web系 SEの技術blogです。Scala, Java, JS, TS, Python, Ruby, AWS, GCPあたりが好きです。

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を追加したいときは参考にしてみてください。

以上です。

 - ライブラリ , ,