むにえる牧場

毎日むにえるをつくっています

homebrew cask で cocoscreatorv2.0.5 をインストールできるようにPRを出した

概要

homebrew caskでcocoscreatorというappを入れたかったのですが、versionが古いものしか登録されてませんでした。
そこでhomebrewについて調べてみたところ、GitHub上でOSSとして運用されていました。
僕個人からpull request(以下PR)を投げることができたので、投げてみました。
(人生初OSSヘのcommitです)

PRを作る上で何かと手間取ったので備忘録的に書き残します。

1. homebrew caskのrepositoryをfork - cloneする

github.com

homebrewのGitHubページに移動してforkします。
forkしたのち手元にforkしたrepositoryをcloneして手元で編集できる状態にします。

$ git clone git@github.com:[各自のユーザー名]/homebrew-cask.git homebrew-cask

2. cocoscreatorの最新パッケージを用意する

2-1. version情報をメモする

homebrewにversionを記載する箇所があるため、version情報を手元にメモしておきます。
大体appのパッケージ(.exe.dmg)にversion情報が載っているので、それを参照します。
今回利用したcocoscreatorは以下のような形式になっていたので、v2.0.5_2018110602 を書き留めておきます。

CocosCreator_v2.0.5_2018110602_mac.dmg

2-2. sha256のhashを作る

homebrewでは、改ざんなどを行ったパッケージが登録されていないか、不正防止用にパッケージごとhashが登録されています。
sha256のhashを作るためには以下のコマンドを利用します。

$ shasum -a 256 [パッケージ名]

このコマンドにて生成されるhashを書き留めます。

2-3. パッケージのdownloadに利用されるURLをメモする

パッケージの配布にCDNを利用していることがよくあるため、CDNで実際に利用されるURLを突き止める必要があります。
今回はMac.dmg 形式のファイルをダウンロードしていたので、ファイルの詳細情報を見て実際のdownload URLを突き止めることができました。

f:id:jalemy:20181118112858p:plain:h400

3. homebrew caskの編集をしてcommitする

cloneしてきたrepositoryの Casks/ 以下に、パッケージごとにrubyで実行内容が書かれています。
今回はcocoscreatorのcaskを編集したいので、 ./Casks/cocoscreator.rb を開きます。

大体どのcaskも下記のような内容になってます。

cask 'example' do
  version ''
  sha256 ''

  url ''
  name ''
  homepage ''

  app ''
end
項目 内容
version バージョン情報/番号
sha256 sha256のhashが記載されている。不正改ざん防止に利用される。
url パッケージのダウンロードに利用するURL
name アプリケーションの名称
homepage アプリケーションのホームページ。今回だったらcocoscreatorだから、 http://www.cocos2d-x.org/creator といった感じ。
app .appファイルの名称

今回はversion upのために編集をするだけなので、

  • version
  • sha256
  • url

と3種類の編集をすればお終いです。

PRを出す

homebrew caskではPRを出す際に、PRのコメントとしてテンプレートが準備されているため、テンプレートに沿って確認を行いcheckboxにcheckを入れるだけでOKです。
具体的には以下の4つ。

After making all changes to the cask:

  • brew cask audit --download {{cask_file}} is error-free.
    このコマンドを実行してエラーが出ないかどうか。
  • brew cask style --fix {{cask_file}} reports no offenses.
    このコマンドを実行してstyle checkが通るかどうか。
  • The commit message includes the cask’s name and version.
    コミットメッセージにcaskの名前とバージョンが記載されているかどうか。
  • The submission is for a stable version or documented exception.
    安定板、もしくは文書化されているような例外のものかどうか。

まとめ

まだPRはmergeされていませんが、人生初のOSS貢献(?)としてPRを出してみました。
gitのお作法さえわかっていれば意外とPR出すのは大変じゃありませんし、OSSのコードも読んでみてなんとなく理解できました。
(あまりruby経験ないのですが、過去のcommitから雰囲気で察しました)
自分の中でOSSへの参加ハードルがぐっと下がった感触を得ています。

実際に出したPRはこちら。
Testは通ってるの確認できたので、mergeされたら嬉しいなと。

github.com

追記(2018/11/18 19:00くらい)

無事mergeされてました!
人生初のOSS貢献達成です。