Mozcmd 形式
mozcmd 形式は、GCLI を簡単に使用できるように保存する手段です。これは Firefox ユーザーが、拡張子 mozcmd
のファイルをいくつか置いたディレクトリを指し示す devtools.commands.dir
を設定することで利用可能になります。
例えば devtools.commands.dir
で C:\mozcmd
(Windows の場合。Mac/Unix では /Users/me/mozcmd
) を指し示すと、Firefox を起動したときや cmd refresh
コマンドを実行してリロードしたときに、そのディレクトリから mozcmd ファイルを読み込みます。
構文
mozcmd ファイルの書式は JSON に基づいていますが、要所に関数を入れることができます。例えば exec
関数です。
ドキュメントのルートは配列であり、この配列は gcli.addCommand()
へ渡すのに適切なコマンドオブジェクトをいくつか含みます。
mozcmd ファイルの例
以下のサンプルは、demo repository から引用したものです。
[ { name: 'hello', description: 'Show a message', params: [ { name: 'name', type: 'string', description: 'Who to say hello to', } ], exec: function(args, context) { return 'Good evening, ' + args.name; } } ]
ひとつのファイルに複数のコマンドを記述することができ、またコマンドは常に自身の名前をファイル名ではなく `name` プロパティから取得します。
関数内を除き、コメントを置くことはできません。
コマンドが実行されるとき、this
は親オブジェクトのコマンドに設定されますので、this.name
はコマンドの名前になります。セットアップ処理が必要である場合、それは最初の実行時に行われるべきであり、またその結果は this
にキャッシュされます。
セキュリティ
セキュリティの危険性がない状態で Firefox が mozcmd ファイルを使用できるようにするセキュリティ機能をユーザーに提供するという考え方から、なんらかの JavaScript が実行される前にコマンドへアクセスすることが必要です。
('アクセス' は、コマンドを実行しなければならないという意味ではないことに注意してください。コマンドは、パラメーターをカスタマイズする関数を提供できます。'アクセス' は、コマンドラインにコマンド名を入力すること (RETURN が押されるかにかかわらず) と定義されます)
現在の mozcmd の実装では、単純にスクリプトをサンドボックス内で評価します。これは期待されたレベルの保護を提供しませんが、Bug 767912 でパーサーの改良を求めています。
詳細文書
コマンドの記述に関するドキュメント をご覧ください。
mozcmd 形式を拡張する
mozcmd 形式は、Type や Field の登録をサポートするよう拡張可能に設計されています。この機能はまだ有効ではありませんが、どのように動作するよう設計されているかを参照できます。