先日、Firebrewというツールを作成し、RubyGemsにて公開しました。
Githubにて開発しています。
コレは何?
FirefoxアドオンをCUIからインストールしたりアンインストールしたりできる、いわゆるパッケージマネージャーと呼ばれるものです。
これを用いれば各種アドオンのインストール・アンインストールを自動化することができます。
たとえば、Firefoxのキラーアドオンの一つであるVimperatorをインストールする場合は以下のようにします。
$ firebrew install Vimperator
なぜ作ったの?
現在ぼくは、VimやGitなど基本的な開発環境のインストール・設定はプロビジョニングツールであるAnsibleを用いて行っています。
これにより新しい環境への移行が簡単になります。
この基本的な開発環境にはブラウザであるFirefoxも入っているので、インストールおよび設定を自動化したいと考えました。
Firefoxのインストールは、MacであればHomebrew Cask、Linuxであればapt-getやyumなどの各種パッケージマネージャーを用いれば良さそうです。
Vimperatorの設定ファイルである.vimperatorrc
などは指定の場所にコピーすれば問題ないでしょう。
しかし、アドオンのインストールを自動化する既存のよい方法がありませんでした。
そんななか、Firefox開発元のMozillaがThe generic AMO
APIというアドオンの情報を取得できるAPIを公開していることがわかりました。
このAPIを用いればアドオンのGUIDやダウンロード元URLなどを取得することが出来ます。これはアドオンの自動インストールを行うにあたって十分な情報です。
そして、アドオンのインストール・アンインストールをするにあたって、インストール先のプロファイルパスの取得にはprofiles.ini
を、
インストールされているアドオン一覧を取得するには、プロファイルディレクトリのextensions.json
をそれぞれ参照すれば良さそうです。
これらを踏まえて、Firefoxのアドオンのパッケージマネージャーを作成することにしました。
どうやって使うの?
さて、肝心の使用方法ですが、まずはFirebrewのインストールを行わなければなりません。
幸いにもFirebrewはRubyのgemとして作成されているので、インストールはgemコマンドを用いるだけです(ただし実行にOpenSSLを必要とするので、Windowsだと面倒くさいかもしれません)。
$ gem install firebrew
Firebrewのインストールが終わったところで使用方法を解説しましょう。
まず、firebrewコマンドの基本的な構造は下記のとおりです。
$ firebrew [--help] [--version]
[--base-dir=<path>] [--profile=<name>] [--firefox=<path>]
<command> [<args>]
そして、主な機能として以下があります。
- アドオンのインストール
- アドオンのアンインストール
- 公開されているアドオンの検索
- アドオンの詳細な情報の取得
- インストール済みアドオンの取得
以下、これらをそれぞれ解説していきます。
アドオンのインストール
名前がname
であるアドオンをインストールします。
$ firebrew install <name>
アドオンのアンインストール
名前がname
であるアドオンをアンインストールします。
$ firebrew uninstall <name>
公開されているアドオンの検索
名前がterm
にマッチするアドオン一覧を表示します。
$ firebrew search <term>
アドオンの詳細な情報の取得
名前がname
であるアドオンの詳細な情報を表示します。
$ firebrew info <name>
インストール済みアドオンの取得
インストール済みアドオンの一覧を表示します。
$ firebrew list
また、以下のオプションが使用可能です。
--base-dir
profiles.ini
があるディレクトリを指定します。
-d <path>, --base-dir=<path>
デフォルト値は下記のとおりです。
プラットフォーム |
値 |
Mac OS X |
~/Library/Application Support/Firefox |
Linux |
~/.mozilla/firefox |
Windows |
%APPDATA%\Mozilla\Firefox |
この値はFIREBREW_FIREFOX_PROFILE_BASE_DIR
環境変数で上書き可能です。
--profile-name
対象となるFirefoxプロファイル名を指定します。
-p <name>, --profile=<name>
デフォルト値はdefault
で、FIREBREW_FIREFOX_PROFILE
環境変数で上書き可能です。
firefoxコマンドのパスを指定します。
-f <path>, --firefox=<path>
デフォルト値は下記のとおりです。
プラットフォーム |
値 |
Mac OS X |
/Applications/Firefox.app/Contents/MacOS/firefox-bin |
Linux |
/usr/bin/firefox |
Windows |
%PROGRAMFILES%\Mozilla Firefox\firefox.exe または %PROGRAMFILES(X86)%\Mozilla Firefox\firefox.exe |
この値はFIREBREW_FIREFOX
環境変数で上書き可能です。
最後に
これでFirefoxの構築を自動化できるようになりました。
また、せっかくAnsibleを使っているので、Ansibleモジュールを作ってみようかと思います。
※2014/07/18 追記: Firebrew用のAnsibleモジュールを作成しました → FirebrewのAnsibleモジュールを作ってみた