#!/usr/bin/perl -w

use strict;
use warnings;

use Getopt::Long;
use Pod::Usage;
#use File::Basename;
#use File::Temp qw/tempfile tempdir/;


my ($help);
my $verbose=0;
my $basedir;
my $flavour='classic';

GetOptions (
    "help"  => \$help,
    "basedir=s"  => \$basedir,
    "flavour=s"  => \$flavour,
    "verbose+"  => \$verbose,
    'quiet'   => sub { $verbose = 0 },
    );
if ($help or not @ARGV) {
    #exec "pod2usage --exit=0 $0";
    pod2usage({ #-message => "the options below are package-specific:" ,
	-exitval => 0  ,
	-verbose => $verbose,
	#-output  => $filehandle
	      } );
}

my ($unlinkdir, @args)=@ARGV;
if (not -d $unlinkdir) {
    die "Invalid argument - not a dir: $unlinkdir";
}

my $catcmd;
my %NAME2SRPM;
my %SRPM2FILE;

&load_pkglist($basedir,'srclist.'.$flavour,\%NAME2SRPM,'%{NAME}\t%{NAME}-%{VERSION}-%{RELEASE}.src.rpm\n');
&load_pkglist($basedir,'pkglist.'.$flavour,\%SRPM2FILE,'%{SOURCERPM}\t%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n');

#print "unlinkdir: $unlinkdir\n";

foreach my $name (@args) {
    my $srpm=$NAME2SRPM{$name};
    next unless $srpm;
    print "name2srpm: $name -> $srpm->[0]\n";
    my $rpms=$SRPM2FILE{$srpm->[0]};
    next unless $rpms;
    print "unlink: ",join(' ',@$rpms),"\n";
    foreach my $rpm (@$rpms) {
	unlink "$unlinkdir/$rpm";
    }
}

sub load_pkglist {
    my ($basedir, $listfile, $MAP, $query)=@_;
    if (-e "$basedir/$listfile") {
	$catcmd="cat $basedir/$listfile";
    } elsif (-e "$basedir/$listfile.bz2") {
	$catcmd="bzcat $basedir/$listfile.bz2";
    } elsif (-e "$basedir/$listfile.xz") {
	$catcmd="xzcat $basedir/$listfile.xz";
    } else {
	die "Oops: $basedir/$listfile not found";
    }
    my $pipecmd="$catcmd | pkglist-query '$query' /dev/stdin |";
    open (my $fn, $pipecmd) or die "Can't open $pipecmd: $!";
    while(<$fn>) {
	chomp;
	my ($name,$file)=split(/\s+/);
	unless ($MAP->{$name}) {
	    $MAP->{$name}=[$file];
	} else {
	    push @{$MAP->{$name}}, $file;
	}
    }
    close($fn);
}
