#!/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";