rcmdnk's blog
Last update

Dr. Homebrew

Homebrewにはhomebrew-cask 等の外部コマンドを導入することが出来ますが、 Rubyを使ったものだけだと思ってたら シェルスクリプトでもなんでも入れられるようだったので試してみました。

Homebrewの外部コマンド

Homebrewには内部のコマンドと共に、 後からインストールしてコマンドとして使えるものがあります。

External Commands · Homebrew/homebrew Wiki

brew commandsとすると一覧が出てきます。

コマンド化するには結構面倒なのかな、というかRubyで書くのかな、と思ってたのですが、 どうやらPATHが通ってるところのコマンドを探して、 brew-commandというものがあるとbrew commandとして使える様になる模様。

.rbの拡張子がついてるものについては.rb拡張子を除いた状態でRubyの実行コマンド ファイルとして認識されます。

homebrew/brew.rb at master · Homebrew/homebre: https://github.com/Homebrew/homebrew/blob/master/Library/brew.rb#L130

.rbがついてるものはrequireメソッドで実行され、 それ以外はexec

.sh等の拡張子を付けておいても使える事は使えますが(brew command.shなどとして)、 brew commandsでは表示されないし避けたほうが無難な様子。

Brewallをコマンド化

brewallはBrewfileを用いてパッケージを管理するシェルスクリプトで、 brew bundleの代わりになるようなものです 1

Brewall: brewパッケージを管理する

BrewfileをGitHubで管理できる様に出来る事が便利。

BrewallにGitHubでリストファイルを管理する機能を付けた

以前はインストール するとbrewallというコマンドが使える様になったわけですが、 レポジトリにbrew-allというbrewallへのシンボリックリンクを追加しました。

これで、今まで通り

$ brew tap rcmdnk/brewall
$ brew install brewall

とインストールすると

$ brew all ...

というコマンドが使える様になります。

$ brew commands
Built-in commands
--cache        cat            doctor         irb            options        search         unlinkapps
--cellar       cleanup        edit           leaves         outdated       sh             unpack
--env          commands       fetch          link           pin            tap            unpin
--prefix       config         help           linkapps       postinstall    test           untap
--repository   create         home           list           prune          tests          update
audit          deps           info           log            readall        uninstall      upgrade
bottle         diy            install        missing        reinstall      unlink         uses

External commands
all                  beer                 gist-logs            pull                 tap-readme
cask                 bundle-dir           graph                server               test-bot
gem                  bundle               man                  services             versions
aspell-dictionaries  cleanup-installed    profile              switch               which
$

と、ちゃんとallが認識されてます。

シェルスクリプトの場合なんかはそのままbrew-allとするのと全く一緒なわけで、 だから何だという感じもありますが、 新しくコマンド作らいたい場合は 単にbrew-*という実行ファイルを作ってPATHが通った所に入れれば Homebrewにコマンドが追加できる、ということです。

追記: 2015/07/21

上の方法は今はobosleteになっていて、 cmdというディレクトリを作ってTapするだけの方法が主流になっているようです。

Homebrewのコマンドを作る方法その2

追記ここまで

Sponsored Links
  1. 現在brew bundleすると、

    $ brew bundle
    Warning: brew bundle is unsupported and will be replaced with another,
    incompatible version at some point.
    Please feel free volunteer to support it in a tap.
    ...
    

    こんな感じのメッセージが出ます。

    Deprecate some contributions. by mikemcquaid · Pull Request #30749 · Homebrew/homebrew

    この辺で色々と外部コマンドについてどうしようかということが話し合われて bundleについてはUnsupportedということになったみたいです。

Sponsored Links

« sentakuに複数選択機能、検索ハイライトを付けた Jekyll 2.0にアップデートしたOctopressで'published: false'なポストをプレビューする »

}