#!/usr/bin/perl -w

use strict;
use warnings;
use Carp;
use Getopt::Long;
use File::Basename;
use RPM::Header;

use Autorepo::Config;

my $list_only=0;
my $result = GetOptions (
    "list" => \$list_only,
);

my %srpm2rpm;
my %name2srpm;

for my $path (@AUTOREPO_RPM_DIRS) {
    for my $rpmfile (glob "$path/*.rpm") {
	my $href = new RPM::Header $rpmfile;
	my $srpmname=$href->{SOURCERPM};
	my $ref=$srpm2rpm{$srpmname};
	if ($ref) {
	    push @$ref, $rpmfile;
	} else {
	    $srpm2rpm{$srpmname}=[$rpmfile];
	}
    }
}

for my $srpmfile (glob "$AUTOREPO_FILES_SRPMS/*.src.rpm") {
    my $href = new RPM::Header $srpmfile;
    my $name=$href->{NAME};
    my $ref=$name2srpm{$name};
    if ($ref) {
	push @$ref, $srpmfile;
    } else {
	$name2srpm{$name}=[$srpmfile];
    }
}

my @unlink;
foreach my $name (@ARGV) {
    my $srpmref=$name2srpm{$name};
    if ($srpmref) {
	foreach my $srpmfile (@$srpmref) {
	    push @unlink, $srpmfile;
	    my $srpmname=basename($srpmfile);
	    my $ref=$srpm2rpm{$srpmname};
	    push @unlink, @$ref if $ref;
	}
    }
}

if ($list_only) {
    if (@unlink) {
	print "unlink: ",join("\n",@unlink),"\n";
    } else {
	print "clean: nothing to do.\n"
    }
} else {
    unlink @unlink if @unlink;
    system ('find','-L',@AUTOREPO_SRPM_LINKDIRS,@AUTOREPO_RPM_LINKDIRS, '-type','l','-delete')==0 or die "symlink cleanup failed";
}
