昨日、Homebrewの拡張:brewdler, tap, cask という記事でbrewdlerを試したことを書きましたが、 どうもただリストを管理してるだけなうえ、 tapでインストールするパッケージはきちんとインストール出来ないし、 削除も対応してなかったりして利点が見いだせなかったので、 それらを出来るようにしたスクリプトを作りました。
Brewall
ファイルはGitHubにあります。
Brewallのインストール
brew-tapでインストール出来るようにしたので、 Homebrewがインストールされてれば
$ brew tap rcmdnk/brewall
$ brew install brewall
でインストール出来ます。
必要なファイルは/bin/brewallだけなので、これを取ってきてパスが通った好きな所に入れてもOKです。
使い方
インプットファイル
管理はデフォルトでは/usr/local/Library/Brewfileをインプットファイルとして使います。
最初に
$ brewall -i
とすると、現在インストールされているファイルからBrewfileを作ってくれます。 このファイルはBrewdlerでも使えますし、 Brewdler様に作ったBrewfileもそのまま流用できます。
Brewdler同様、tap/caskにも対応していて、こんな感じで
Brewfilwを作って下さい(既にHomebrewで何かインストールしてある場合は先
にbrewall -iでファイルを作りそれを編集して下さい):
brew 'mercurial'
brew 'macvim --with-lua'
tap 'phinze/cask'
cask 'firefox'
最初にコマンド(brew/tap/cask)、次にパッケージやインストール時のオプションです。
基本的2番目以降の項目はbrew install等の引数に直接渡されるだけなので、
brew installに使える引数は全て使えます。
なので、MacVimを+luaでコンパイルしてインストールしたい場合は上の様に--with-lua付きで。
brewall -iでも、これらのオプション付きでインストールしたものはオプション付きで初期化します。
また、Brewdlerだとtapで書いただけの場合、brew installが行われないので
手作業が必要でしたが(上のファイルだとcaskがないと言って怒られる)、
Brewallはbrew installもパッケージ名を探してきて自動的に一緒にbrew installもされます。
追記: 2013/09/15
brew-tapに関して少し理解してなかった部分があって1レポジトリ1パッケージ(Formula) 限定にしてましたが、そうでもないので、 それに対応するようアップデート:Brewallにtapall追加。
これに伴いtapだけの場合はtapするだけ、tapallコマンドを使うと
レポジトリ内の全てのFormulaeに従いパッケージをインストールする様になります。
(上で書かれてる様な自動インストールをしたい場合はtapallを使う。)
追記ここまで
また、caskコマンドがある場合、自動でtap 'phinze/cask'と同じことをするようにしてあるので、
上の例ではphinze/caskの項を落としてもOKです。
順番も、先にcaskの項目があっても、その時にcaskをインストールしてしまうので
問題ありません。
インストール
引数なしでbrewallを行うと、Brewfileにあるパッケージをインストールします。
MacVim等、アプリケーションを含むパッケージの場合、-lを与えることで、
ローカルの~/Applications/へ各アプリケションへのリンクを作ります(brew linkapps)。
もし、グローバルな/Applications/へインストールしたい場合は-gを使います。
この場合はsudoするのでrootパスワードを聞かれます。
クリーンアップ
brewall -cとすると、Brewfileに無い項目を削除します。
デフォルトではdry runモードで走るので実際には削除しません。
一度brewall -cでチェックして、実際に削除したい場合は
$ brewall -c -r
と-rを付けて下さい。
追記: 2013/11/25
現在のbrewall(v0.0.7以降)では、
レポジトリ情報用にこの-rを使いたかったので、オプションの定義を変更して
-Cがこの実際に削除する時に使うオプションになっています。
追記ここまで
また、caskコマンドがある場合、tap 'phinze/cask'がなくてもこれを削除しません。
Brewfile編集
$ brewall -e
とするとBrewfileを編集できます。Editorはデフォルトではvimですが、
EDITOR変数が設定してある場合はその値を使います。
まとめ
Homebrew等、基本Rubyで書かれてるのでRubyで作った方が喜ばれるところかもしれませんが、 RubyはOctopressで使うくらいでおぼつかない(じゃあなぜOctopressを使ったか。。。)ので、 簡単にシェルスクリプトで書きました。
Brewdlerで出来る事は網羅し、かつ、インストールは全自動化、 削除も簡単に行える様にできたので取り敢えず満足なところ。
