#!/usr/bin/perl

use strict;

use lib "$ENV{APB_HOME}/lib";
use AutoPkgBuilder;
use Dpkg::Dsc;
use DirHandle;

sub scan_build_dir {
    my $dir = "$APB_HOME/build";
    msg("Scanning.");
    chdir($dir) or die "Can't change directory $dir ($!)";
    my $dh = new DirHandle(".") or die "Can't open $dir ($!)";
    my @files = sort grep {/\.dsc$/} $dh->read;
    $dh->close;
    my (%src_list, %bin_list);
    foreach my $file (@files) {
	my $dsc = new Dpkg::Dsc($file);
	my $pkg = $dsc->source;
	my $bver = $dsc->base_version;
	my $ext_dir = "$pkg-$bver";
	next unless (-d $ext_dir);
	my $bfiles = new Dpkg::Files($ext_dir);
	if (!$bfiles || !-f $bfiles->file(0)) {
	    ind("x");
	    next;
	}
	ind;
	my @sfiles = ($file, $dsc->files);
	@src_list{@sfiles} = (1) x scalar(@sfiles);
	@bin_list{$bfiles->file_list} = (1) x $bfiles->count;
    }
    $dh->close;
    msg(".Done.\n");
    return ([sort keys %src_list], [sort keys %bin_list]);
}

sub main {
    my ($sfiles, $bfiles) = scan_build_dir;
    apb_generate_file("$APB_HOME/var/mv_src.sh", sub {
	my $fh = shift;
	$fh->print("#!/bin/sh\n\ncd $APB_HOME\n\n");
	foreach my $file (@$sfiles) {
	    $fh->print("mv -v build/$file sources\n");
	}
    });
    apb_generate_file("$APB_HOME/var/mv_bin.sh", sub {
	my $fh = shift;
	$fh->print("#!/bin/sh\n\ncd $APB_HOME\n\n");
	foreach my $file (@$bfiles) {
	    $fh->print("mv -v build/$file binary-sh4\n");
	}
    });
}

main;
