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なアプリも自動で入れられます。 大分便利になった感。