ついカッとなってnodebrewのFormulaを週末に作ってしまった。後悔はしていない。勢いで作ったので2回ほどプルリクのレビューにひっかかってしまった。ドキュメント嫁的な指摘もあったりしてションボリしつつ、でもこれで nvm 使わなくなれるのでちょっと嬉しい。
Formula作る人向けのドキュメント
公式ドキュメントが充実しているので、下記の3ページを読んでからプルリク送ると良さげ。
nodebrewのFormulaを作るまでの過程
/usr/local/Library/Formula/nodebrew.rb を作る
他のを適当にコピーしても良いけど、たぶん
brew create <name>
のように作るのが正しい。
他のFormulaを参考にhomepage, url, sha1を設定する
sha1は適当でいい。そしておもむろにbrew install nodebrewしてみる。 そうすると、sha1の値が違うよと怒られるのでそこで表示されてるsha1をFormulaに書く。(ダウンロードurlが正しいことはちゃんと確認しましょうね。間違って変なアーカイブをだうんろーどしないように)
install メソッドを実装する
今回はbashやzsh向けのcompletionファイルがあったのでそれもインストールするようにした。やり方はpyenvとかその辺のFormulaを参考にした。
caveats
インストールした後に表示される警告みたいなメッセージ。これもpyenvのを参考にした。
テスト
ちゃんとインストールされたかどうか簡単なテストを書く。
forkしてブランチ作ってプルリクを送る
git clone <forkしたhomebrewリポジトリ> git checkout -b nodebrew cd Library/Formula/ git add nodebrew.rb git commit nodebrew.rb && git push
あとはプルリクエストを送る
プルリクで指摘されたこと
- Homebrewが$HOMEにディレクトリ作っちゃダメだよ
- nodebrewはインストール時に $HOME/.nodebrew/{default,node,src} ディレクトリを作る
- ってかそのディレクトリ作る処理ってupstream(nodebrew)側でできないのかな?(Homebrewメンテナ)
- nodebrew setup すれば作られるんだけど、この処理ではスクリプトをダウンロードする処理も込みで、ファイルをダウンロードするのはHomebrew的にNGそうだったので今回はnodebrew側でディレクトリ作る処理を外出しするようにした
- brew audit nodebrewするとエラーになるよ(Jenkinsさんがプルリクを自動でテストしてた)
- サーセン、これは事前にやれとドキュメントにも書いてありましたね。
- /usr/local っていうパスを直接使っちゃダメだよ
- varやHOMEBREW_PERFIXなどHomebrewが定義しているものを使いましょう。どういうものが定義されているかはここに書いてある。
- testはもう少しちゃんと書こう
- 最初は nodebrew help を実行してexit statusが正常かチェックするだけだったのだが案の定怒られたw
- ので、nodebrew ls-remote して v0.10.0 が出力されていることをチェックするようにした。まぁやり過ぎるとキリがないのでこのぐらいでいいかなと思ったらレビューは通った
最後に
これでnvmがいらない子になりました。とにかく普段よく使っているソフトウェアに貢献できるとモチベーションが上がりますね。
サーバサイドJavaScript Node.js入門 (アスキー書籍)
- 作者: 清水俊博,大津繁樹,小林秀和,佐々木庸平,篠崎祐輔,高木敦也,西山雄也,Jxck
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/02/27
- メディア: Kindle版
- この商品を含むブログを見る