#!/usr/bin/env perl

$version = $ARGV[0];

if($version eq "") {
    print "Enter version number!\n";
    exit;
}

if(!-f "apps/version.h") {
    print "run this script in the root dir\n";
    exit;
}
# save the complete version string for VERSION file,
# strip everything after space / hyphen for filename
$longversion = $ARGV[0];
$version =~ s/[ -].+//;

# -L allows find to follow symbolic links
@files=`find -L . -name FILES`;

my @entries;

sub dirpart {
    my ($file)=@_;
    my @p=split("/", $file);
    $p[$#p]=""; # blank the last one
    my $dir=join("/", @p);

    $dir =~ s/^\.\///; # cut off ./ beginnings

    $dir =~ s/\/$//;  # off / trailers

    return $dir;
}

sub add {
    my ($file)=@_;

    my $dir=dirpart($file);

    open(FILE, "<$file");
    while(<FILE>) {
        if($_ =~ /^ *\#/) {
            next;
        }
        chomp;
        push @entries, "$dir/$_";
    }
    close(FILE);
}

for(@files) {
    chomp;
    add($_);
}

sub mkalldir {
    my ($dir) = @_;

    my @parts = split("/", $dir);

    #print "IN: $dir\n";

    my $sub="";
    for(@parts) {
        #print "PART: $_\n";

        $sub .= "$_";
        if($_ eq "") {
            next;
        }
        mkdir($sub, 0777);
        #print "make $sub\n";
        $sub .= "/";
    }
    
}

#mkalldir("rockbox-1.0/firmware/malloc");
#exit;

for(@entries) {
    my $dir = dirpart("rockbox-$version/$_");
    #print "Create $dir\n";
    mkalldir($dir);
    #print "Copy $_ to $dir\n";
    `cp -p $_ $dir 2>/dev/null`;
}

if(!open(VERSION, "<apps/version.h")) {
    print "Can't read version.h\n";
    exit;
}
   
if(!open(THIS, ">rockbox-$version/apps/version.h")) {
    print "Can't create a new version.h for this version\n";
    exit;
}
while(<VERSION>) {
    $_ =~ s/^\#define APPSVERSION .*/\#define APPSVERSION \"$version\"/;
    print THIS $_;
}
close(VERSION);
close(THIS);

if(!open(VER, ">rockbox-$version/docs/VERSION")) {
    print "Can't create new docs/VERSION file\n";
    exit;
}
print VER $version;
close(VER);

`tar -cjf rockbox-$version.tar.bz2 rockbox-$version`;
`rm -rf rockbox-$version`;
