前回書いた 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 に入れる事を考えた方が良いかな、とか思ってます。