#!/usr/bin/perl
#	Scriptas isarchyvuoja sioje direktorijoje esancius jar failus
#	i atskiras direktorijas.
#	Dekompiliuoja ir istrina nereikalingus .class failus

use strict;
use File::Copy;
use Cwd;

sub filename
{
    my $file = shift;
    $file = reverse $file;
    $file =~ s/^raj\.//i;
    $file = reverse $file;
}

sub decompile
{
    my $file = shift;
    my ($dir, $name, $ext) = ($1, $2, $3)
	if $file =~ /(.+?)\/([^\.\/]+)\.([^\/]+)/;
    print "[JAD] $file\n";
    `jad -ff -t -o -s .java -d $dir $file`;
}

sub extract_decompile
{
    my $dir = shift;
    #`cd $_ && jar -xf $_.jar && cd '..'`;
    my $old_dir = &getcwd;
    chdir $dir;
    #extract
    print "[JAR] -xf $dir.jar\n";
    `jar -xf $dir.jar`;
    #decompile, rename, delete
    my @data = `find | egrep -i \'\.class$\'`;
    @data = grep {chomp; -f} @data;

    map decompile($_), @data;
    map unlink($_), @data;
    chdir $old_dir;
}

my @files = <*.jar>;
my @names = map filename($_), @files;

map mkdir($_), @names;
map copy($_.'.jar', $_), @names;
map extract_decompile($_), @names;

print "Done.\n";