MacでApp Storeのアプリをコマンドラインからインストールする で書いたとおりついにMacで コマンドラインからApp Storeのアプリをインストールできる様になったので これを Brew-file に導入し、必要なコマンドラインツールやアプリを 全てBrewfileを元にBrew-fileでインストールできる様になりました。
Brew-fileでApp Storeのアプリを管理
追記: 2016/02/22
ちょっとバグがあってinitしてもリストにApp Storeのアプリが載らない状態に
なってましたが治しました。
追記ここまで
Brew-fileではHomebrewでインストールされるコマンドラインツールはもちろん、 Homebrew-caskでインストールしたアプリも管理できる様になってます。
大概はこれで済むのですが、一部、App Store経由でインストールしてるアプリがあって、 その情報に関してはとりあえず手元にあるものをリストする、 という形をとっていました。
リストには残せますが、他のマシンとかに行ってbrew file installしても
Please install ~ from App Store!
みたいな表示を出すだけでした。
しかし、今回masというコマンドが公開され、これによって
コマンドラインからApp Storeのアプリもインストール出来る様になりました。
これを組み込んでBrew-fileでもApp Storeのアプリをインストールできるようにしました。
masでインストールする場合には
各アプリのIDみたいなものが必要ですが、
これはmas listコマンドでアプリとIDの一覧が取得できます。
これを使って、Brew-fileではbrew file initすると、
Brewfileの中に
# App Store applications (Identifier, App Name)
appstore 451732904 App Language Chooser
appstore 430173763 Degrees
appstore 458998390 Farensius
appstore 682658836 GarageBand
appstore 992115977 Image2Icon
appstore 409183694 Keynote
...
みたいなリストが出来ます。
このファイルを他のマシンに持って行って
brew file installすればこれらのアプリもインストールできます。
App Storeのアプリをインストールする際、最初だけ App Storeのアカウント認証のダイアログが出てきます。
追記: 2016/02/14
上のページに書かれてますが、 このIDはApp StoreでのアプリのIDみたいなもので、 アプリのページのURLにこの情報が含まれています。
App Language Chooserなら、
App Language Chooser を Mac App Store で, URL: https://itunes.apple.com/jp/app/line/id451732904
なのでここから調べてBrewfileに書くことも出来ます。
追記ここまで
以前の様に名前だけ書いておいても通りますが、
その場合、cleanの時に削除するかどうかの判断に使われるのと、
installの際にまだインストールされてないアプリがあると、
App Store application must be listed with identifier.
Please try:
$ brew file init
の様な表示が出るようにしておきました。
追記: 2016/02/13
Travis CIでテストしていたところ、masコマンドが
$ mas
dyld: Library not loaded: /System/Library/PrivateFrameworks/StoreFoundation.framework/Versions/A/StoreFoundation
Referenced from: /usr/local/bin/mas
Reason: image not found
みたいなエラーを出していました。 Travis CIのOS Xは10.9(Mavericks)と古いので、そのせいでこのライブラリが無いのか、 もしくはTravis CIではApp Store関連をいじらせないようにするために抜いてあるのかもしれませんが (手元にMavericksはないので分かりません。。。)、
いずれにしろテストでも困るので、使えない場合は 前のようにただ名前だけをリストし、インストールに関しても
Please install <App Name> from App Store!`.
と出すようにしました。
この変更で、もしmasが使える環境でもBrewfileにappstoreでアプリ名
だけがある場合にはbrew file initを試して、という代わりに
こちらの表示をさせるようにしました。
追記ここまで
まとめ
これであるマシンの環境をbrew file initでBrewfileを書き出して
他のマシンでbrew file installすることで
一通りアプリ、コマンドラインツールのインストールを行える様になりました。
同期してる様な場合でもApp Storeなアプリも自動で入れられます。 大分便利になった感。



