はじめに
IT系のイベントではしばしばパーカーやTシャツなどが賞品として与えられます。
最強のエンジニアはTシャツとパーカーを一生買わないと言われるほどです。[要出典]
しかし、初心者にとってこのような賞品を得るまでの道のりはなかなか大変です。
そんな中、毎年10月にDigitalOceanによって開催されるHacktoberfestでは、比較的簡単にTシャツをゲットすることができます。
Hacktoberfestとは
Hacktoberfestは毎年10月にDigitalOceanが開催しているイベントです。
簡単に言えば、GitHubでPull Request(PR)をいっぱいするとご褒美がもらえるイベントです。
賞品を獲得するには、以下の条件を満たすPRを10月中に4回1行う必要があります。
- PR先レポはパブリックであること
- 以下のいずれかを満たすこと
- レポに
hacktoberfest
トピックが付いている - PRに
hacktoberfest-accepted
ラベルが付与された
- レポに
- 上の条件を満たしたのち、無効化2されずに14日経過すること
完了するとTシャツをもらったり木を植えたりできます。
Homebrewとは
HomebrewはmacOS向けのパッケージマネージャです。
大きな特徴として、パッケージの更新がコミュニティベースであることがあります。
多くのパッケージマネージャでは各パッケージにメンテナがいて、その人が担当パッケージの更新を管理しています。
一方でHomebrewは全ての更新がGitHubのPRとして行われ、決まった担当者は存在しません。
なぜHomebrewで簡単にHacktoberfestが攻略できるのか
Homebrewにはbrew bump-formula-pr
およびbrew bump-cask-pr
という、パッケージのバージョン更新PRを半自動化するコマンドがあります。
これを使えばHomebrewの役に立ちつつ簡単にHacktoberfestを攻略できます。
あったほうがよい技能
-
git
の知識(「コミットを全部1つにまとめて!」と言われたらできる程度) - 英語の技能(指摘を受けたときに読んで対応できる程度(DeepL可))
具体的なフロー
バージョンが古いパッケージを探す
自分でパッケージのホームページを見て最新バージョンを確認してもいいですが、brew livecheck
を使うと自動でホームページからバージョンを取得して表示してくれます。
brew livecheck
は基本的には引数でパッケージ名を与えてそのパッケージの最新バージョンを確認するものです。
ただ、今回はローラー作戦で古いパッケージを探したいです。
この場合、引数なしで--installed
オプションを付けて以下のように実行すると、自分の環境に入っているパッケージを全てチェックしてくれます。
% brew livecheck --installed
ちなみに、インストール如何にかかわらず全てのパッケージを調べる--all
もありますが、パッケージは全部で1万近くあるのでやめた方がよいです。
古いパッケージを見つけたら、右側に表示されている新しいバージョンを控えておきます。
上の画像ではaom
が更新されているようなので、これを例にしてPRを作成してみます。
パッケージの種類を識別する
Homebrewが扱うパッケージには、formulaとcaskの二種類があります。これらの違いはここでは詳しく書きません。
どちらを更新するかによってコマンドが違うので、上で見つけたパッケージがどちらかを識別する必要があります。
識別するには、以下のコマンドでパッケージの記述を確認するとよいです。
% brew cat <パッケージ名>
formulaでは先頭行にclass <パッケージ名> < Formula
と書かれています。
caskでは先頭行にcask "<パッケージ名>" do
と書かれています。
aom
を見てみます。上の判断基準からするとformula
のようです。
バージョン更新のPRを作成・送信する
ここまででパッケージ名、パッケージの種類、新しいバージョンの3つの情報を手に入れました。
あとはコマンドを使ってPRを送るだけですが、パッケージの種類によって以下のどちらかになります。
% brew bump-formula-pr <パッケージ名> --version=<新バージョン>
% brew bump-cask-pr <パッケージ名> --version=<新バージョン>
特に問題がなければ、上のコマンド一発でPRが送信されます。
逆に、問題がある場合というのはたとえば以下のような場合です。
- すでに対象のパッケージに対するPRが存在する
-
resources
3が存在する
この場合、コマンドは失敗し、エラーを返します。
これらの問題を頑張って対処してもいいですし、あきらめて他のパッケージを探しに行くのもいいでしょう。
ちなみに、aom
は執筆時点でPRがすでにあるのでエラーになります。
PRがマージされるまでちゃんと世話を見る
バージョン更新PRの大半はなんの問題もなくHomebrew側のテストをパスしマージされます。
一方で、更新によってテストが失敗するようになり、対処を求められる場合もあります。
自分でなんとかできるようなら対処し、難しいようなら割り当てられたレビュワーに助けを求めましょう。
おしまい
Homebrewを使う人は多いのにPRを送る人はあんまりいないので記事を書いてみました。
改善点あればお気軽にコメントください。