chrome内のjarファイルを拡張機能の名前で解凍するperlスクリプト

firefox拡張機能を作りたいと思っているのですが、
もっといろんな拡張機能の中身を効率的に見たい!!


でも、ディレクトリ名が{45qiks8763jkyy}みたいな名前で全然わかりにくい。。


ということで、
/tmp/extensions の中の firebug といった拡張機能の名前のディレクトリに
firebug.jarを解凍してくれるperlスクリプト

ただし、Linuxでしか動作しません。動作確認はFedoraCore6のみ。
それぞれの環境に合わせて適宜変えてください。^^;
って、機能のわりに制約多すぎてあんま存在意義なさそ。。まぁいいやw

#!/usr/bin/perl 
use File::Find;
use File::Path;

if (scalar @ARGV < 1) {
    die "You should input first arguments, firefox extensions directory.";
}

my $EXTENSION_DIR   = $ARGV[0];
my $OUTPUT_DIR      = $ARGV[1] || '/tmp/extensions';
my $DELETE_FORCE    = $ARGV[2] || 0;

find(\&unzip_jar, $EXTENSION_DIR);

sub unzip_jar {
    my $jar_path = $File::Find::name;
    my $jar_name = $_;

    if ($jar_path =~ /extensions\/[^\/]+\/chrome\/[^\/]+\.jar/) {
        my ($ext_name) = $jar_name =~ /(.*)\.jar/;
        my $output = "$OUTPUT_DIR/$ext_name";

        if (-d $output) {
            return if !$DELETE_FORCE;
        }
        else {
            File::Path::mkpath($output) unless (-d $output);
            system("unzip $jar_path -d $output");
        }
    }
}

使い方

./unpack_extensions.pl /home/develop/.mozilla/firefox/qq23wse.default/extensions /tmp/extensions

というぐあいに、
第1引数に拡張機能までのパス、第2引数に出力ディレクトリを指定してください。


ちなみ、FedoraCore6にはunzipがデフォルトでは入ってません。
また、yumレポジトリにも無いので、
FedoraCore5用のパッケージをインストールする必要があります。

ftp://ftp.riken.go.jp/fedora/core/5/i386/os/Fedora/RPMS/lha-1.14i-19.2.1.i386.rpm

要注意。