前回書いた HomebrewにFormulaを公式に入れてもらうためにチェックする事 で出したPull Requestで Homebrewのコマンドの使い方についてもコメントを貰ったのでそれについて。
Homebrewコマンドの作り方その1
Homebrewのコマンド、とここで言ってるのは、 Homebrew Cask の様に、
$ brew cask ...
とbrewコマンドに対してサブコマンドとして使える物を指しています。
以前、
Homebrewのコマンドを作る方法
というところでちょっと書きましたが、
ここで書いた方法は
brew-XXXと、brew-の付いた実行ファイルを作って
これをPATHが通った場所に置いて実行出来るようにしておくと、
$ brew XXX
という形でbrew-XXXが実行できる様になる、というもの。
Rubyの実行ファイルに関してはbrew-XXX.rbというファイルがbrew XXXで
実行できる様になります。
他の拡張子については付けるとbrew commandsで表示されないので
付けない様に。
Homebrewコマンドの作り方その2
最初に見た頃は Caskを始め上の様な方法だけがありましたが、 今は新しい別の方法があって、そちらがrecommendationだとのこと。
やりかたはcmdというディレクトリを持つレポジトリを作って、
このcmdの中にbrew-XXXの様な実行ファイルを入れる、というもの。
この方法だと、インストールがTapだけで済みます。
brew commandsとかで探したり、サブコマンドを実行する際、
上の方法の様なPATHの中にあるbrew-XXXに加え、
Tapしたレポジトリの中でcmdというディレクトリがあるものを探して、
その中のbrew-XXXもサブコマンドとして採用する様になっています。
また、この場合、brew-XXXというファイル自体はPATHの通った場所に入らないので
brew-XXXというコマンドは直接使えなくなります。
Tapしたディレクトリはbrew updateでアップデートされるので、
このcmdディレクトリを使った方法だと
brew updateでコマンドをアップデートすることが出来ます。
代わりにFormulaを使ったインストールではないので、 バージョン違いのものとかを同じレポジトリで作る事はできなくなります。
こちらの方法が薦められてるのは、 サブコマンドはHomebrew自身のアップデートと常に連動するべきだ、 という所もあるんだと思います。
Formulaを使わないと homebrew-file で使っていたようなセットアップファイルのインストールができなくなりますが、
これについては、 別のセットアップコマンドファイル(e.g. brew-setup-file)を作って、それを
1 2 3 | |
の様にして.bashrcや.zshrcから呼んで上げれば良い、とのこと。
見て分かる通りevalで出力を実行してるので、
既に設定ファイルがある場合は、
1 2 3 | |
みたいな感じで設定ファイルをcatしてあげればOK。
brew command XXXはbrew-XXXのパスを返してくれます。
設定ファイルはコマンドの入ったレポジトリにあるので、 上のようにすると同じレポジトリにあるファイルを読むことが出来ます。
一応、今のbrew-fileでこのcmdを使った方法を使って作って見ました。
とりあえずこれに置き換えて試してみましたが、 今のものと同じ様に動くことが確認出来ました。
なので置き換えは可能なのですが、
置き換えると一度brew-fileをアンインストールしてから
Tapしてもらわないとインストールしたもの自体がアンインストール出来なくなって
しまう(Formulaを消してしまったとすると)し、
コマンド補完等の設定方法も変わるのでどうしようかな、と。
この変更する位なら 前回 も書いたようにRubyで書きかえて Homebrew/homebrew-bundle に入れる事を考えた方が良いかな、とか思ってます。
![セクシーコマンド外伝 すごいよ!!マサルさん(1) [DVD]](https://images-na.ssl-images-amazon.com/images/I/51KVW88VWBL._SS200_.jpg)