#!/usr/bin/perl -w

package Source::Repository::Mass::RepoCompare;

use strict;
use warnings;
use Carp;

use Source::Repository::Mass;
use Source::Repository::RPM::ALTLinuxSrcList;

our @ISA = qw/Source::Repository::Mass/;
$Source::Repository::Mass::strategy = 'newer';

$Source::Repository::Mass::origin_class='Source::Repository::RPM::ALTLinuxSrcList';
$Source::Repository::Mass::dest_class='Source::Repository::RPM::ALTLinuxSrcList';
$Source::Repository::Mass::epoch_comparator=\&Source::Package::Comparators::rpm40_epoch_comparator;
$Source::Repository::Mass::version_comparator=\&Source::Package::Comparators::pure_rpm_version_comparator;
$Source::Repository::Mass::release_comparator=\&Source::Package::Comparators::pure_rpm_release_comparator;

push @Source::Repository::Mass::EXT_LONGOPT_CLASSES, __PACKAGE__;

our $verbose=0;
my $opt_format='%{ORIGINNAME}\t%{ORIGINFILE}\t%{DESTFILE}\n';

our @LONGOPT = (
	"qf|queryformat|format=s"	=> \$opt_format,
    );
#sub cli_container_ref {
#    return ['Source::Repository::Mass'];
#}
sub print_longopt {
    print "girar-copymass options:
	--queryformat    output format. default is $opt_format
";
}
    
my $convert=Source::Repository::Mass::RepoCompare->new();
$convert->process();

sub process_pair {
    my ($self,$rpmmap, $transaction_name, $transaction_count)=@_;
    my $out=$opt_format;
    $out=~s/\%\{(ORIGIN|DEST)(NAME|FILE|URL|VERSION|RELEASE|EPOCH)\}/&__getval($rpmmap,$1,$2)/eg;
    $out=~s/\\t/\t/g;
    $out=~s/\\n/\n/g;
    print $out;
    #print "process_pair:", $rpmmap->originname, "\n";
}

sub __getval {
    my ($rpmmap,$repo,$val)=@_;
    return $rpmmap->originname if $repo eq 'ORIGIN' and $val eq 'NAME';
    return $rpmmap->destname if $repo eq 'DEST' and $val eq 'NAME';
    my $pkg=$rpmmap->origin;
    $pkg=$rpmmap->dest if $repo eq 'DEST';
    return 'undef' unless $pkg;
    return $pkg->file if $val eq 'FILE';
    return $pkg->url if $val eq 'URL';
    return $pkg->version if $val eq 'VERSION';
    return $pkg->release if $val eq 'RELEASE';
    return $pkg->epoch if $val eq 'EPOCH';
    #print "Oops: $repo, $val\n";
    return '%{'.$repo.$val.'}';
}

1;
