#!/usr/bin/perl -w

package Source::Repository::AutorepoMassMail;

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

use Autorepo::Config;

use Source::Repository::Mass 0.05;
use Source::Repository::Matcher;
use Source::Repository::Matcher::DistroMap;
use Source::Repository::Mass::Transform;
our @ISA = qw/Source::Repository::Mass/;

$Source::Repository::Mass::strategy = 'destupS';
$DistroMap::default_destbranch='sisyphus';

my ($list_only);
my $autoports_mode=$CONFIG{'AUTOREPO_AUTOPORTS_SUFFIX'};
my $verbose=1;
my $result = GetOptions (
    'autoports' => \$autoports_mode,
    'list' => \$list_only,
    'q' => sub {$verbose=0},
);

$Source::Repository::Mass::ORIGINPATH=$AUTOREPO_FILES_SRPMS;
$Source::Repository::Mass::DESTPATH=$CONFIG{'AUTOREPO_PURGE_DESTPATH'};
$Source::Repository::Mass::Transform::suppress_rename=1;

if ($autoports_mode) {
    exit 0;
}

my $acl = ALTLinux::ACL->new();

my @NAMES;
foreach (glob ("$AUTOREPO_FILES_SRPMS/*.src.rpm")) {
    my $href = new RPM::Header $_;
    push @NAMES, $href->{NAME};
}

my $convert=Source::Repository::AutorepoMassMail->new(
    -packages => \@NAMES,
    );

my @older_srpms;
$convert->process();

if (@older_srpms) {
    print "mailing:\n";
    foreach my $ref (@older_srpms) {
	print join(' ','autorepo-send-message-cannot-purge',@$ref),"\n";
	system('autorepo-send-message-cannot-purge',@$ref);
    }
}

sub process_pair {
    my ($self,$pkgpair,$transaction_name,$transaction_count)=@_;
    my $originrpm=$pkgpair->origin->{-file};
    die "Oops: no file for ".$pkgpair->originname if not $originrpm;
    my $leader=$acl->leader($pkgpair->dest->{-name});
    push @older_srpms, [
	$leader,
	basename($pkgpair->dest->{-file}),
	basename($originrpm),
	] if $leader;
}

1;
