#! /usr/bin/perl -w

use strict;
use Cwd 'getcwd';
use File::Find;           
use File::Basename;
use File::Path;

my $debug = 0;
my $verbose = 1;

my $pkg = $ARGV[0];
if ($pkg) {
    if ($pkg eq "--auto") {
        optify_auto ();
    } else {
        optify_package ($pkg);
    }
} else {
    print STDERR "Usage: maemo-optify-deb PACKAGE\n";
    print STDERR "       maemo-optify-deb --auto\n";
}

sub dbg {
    if ($debug) {
        print STDERR @_;
    }
}

sub vrb {
    if ($debug || $verbose) {
        print STDERR @_;
    }
}

sub optify_package {
    my ($pkg) = @_;

    my $dir = basename ($pkg, ".deb");

    if (-e $dir) {
        print STDERR "Working directory $dir exists, aborting\n";
        return;
    }

    # XXX - remove $dir always

    system ("dpkg-deb", "-x", $pkg, $dir) == 0 || die "Can't extract archive";
    system ("dpkg-deb", "-e", $pkg, $dir . "/DEBIAN") == 0 || die "Can't extract archive (control)";

    my $status = system ("maemo-optify", "--raw", $dir);
    if ($status == 0) {
        system ("dpkg-deb", "-b", $dir, $pkg) == 0 || die "Can't build archive";
    } elsif ($status != 77*256) {
        die "Optification failed: $status\n";
    }
    system ("rm", "-rf", $dir);
}

sub optify_auto {

    my $mode = "none";
    if (open CONFIG, "<", "debian/optify") {
        $mode = <CONFIG>;
        chomp ($mode);
        close CONFIG;
    }
    
    print STDERR "maemo-optify-deb: mode $mode\n";

    if ($mode eq "auto") {
        open FILES, "<", "debian/files" || die "$!";
        while (<FILES>) {
            my ($pkg) = split();
            optify_package ("../" . $pkg);
        }
        close FILES;
    }
}
