#!/usr/bin/perl -w

package Source::Repository::Mass::Fedora2ALT;

use strict;
use warnings;
use Carp;
use Getopt::Long;
use RPM qw/evrcmp/;

use Source::Repository::Mass;
use Source::Repository::Matcher;
use Source::Repository::Matcher::DistroMap;
use Source::Repository::Mass::Transform::Embedded;
use RPM::Source::Convert::ALTLinuxImport;

our @ISA = qw/Source::Repository::Mass::Transform::Embedded/;

$DistroMap::default_originrepo='fedora';
$DistroMap::default_destrepo='altlinux';

my ($ALTROOT)= grep {-d $_} qw'/var/ftp/pub/Linux/ALT /ALT ALT';
my ($FCROOT)= grep {-d $_} qw'/var/ftp/pub/Linux /mirror/Linux Linux';

$DESTPATH="~/hasher/repo/SRPMS.hasher:~/hasher/repo/SRPMS.hasher.S:$ALTROOT/Sisyphus/files/SRPMS:$ALTROOT/autoimports/Sisyphus/files/SRPMS:$ALTROOT/p6/branch/files/SRPMS:$ALTROOT/5.1/branch/files/SRPMS";
$ORIGINPATH="$FCROOT/fedora/linux/development/rawhide/source/SRPMS:$FCROOT/russianfedora/russianfedora/free/fedora/development/rawhide/source/SRPMS";
$Source::Repository::Mass::strategy='newer';

@ORIGINSKIP=qw//;

# foreign | alt (rename)
%ORIGIN2DESTMAP=qw/
spring		springrts
spring-installer springrts-installer
spring-maps-default springrts-maps-default
/;

my $convert=Source::Repository::Mass::Fedora2ALT->new();
my $verbose=0;
$convert->process();

sub cmp_origin_dest {
    my ($self,$origin, $dest) =@_;
    return 1 unless $dest;
    return -1 unless $origin;
    my $originversion=$origin->version;
    my $originrelease=$origin->release;
    my $destversion=$dest->version;
    my $destrelease=$dest->release;
    # (?=(?:\.|$)) due to smth like Release: 7%{?dist}.1
    $originrelease=~s/\.fc\d+(\.R)?(?=(?:\.|$))//;
    my $cmp =$originversion cmp $destversion;
    if ($cmp!=0) {
	$cmp=evrcmp($originversion,$destversion);
	print STDERR "$originversion rpmcmp $destversion = $cmp\n" if $verbose;
	return $cmp if $cmp !=0;
    }
    #Binary "cmp" returns -1, 0, or 1 depending on whether the left argument
    #is stringwise less than, equal to, or greater than the right argument.

    if ($destrelease=~/^alt([^_]+)_(.+)$/) {
	my $destfcrel=$2;
	$cmp=evrcmp($originrelease,$destfcrel);
	print STDERR "$destfcrel rpmcmp $originrelease = $cmp\n" if $verbose;
	return $cmp;
    } else {
	warn "WARNING: non-robotic dest release $destrelease";
    }
    return 1;
}
