#!/usr/bin/perl -w

use strict;
use warnings;

use File::Basename;
use ALTLinux::RepoList;
use Source::Shared::CLI;
our @ISA = qw/Source::Shared::CLI/;

my $verbose=0;
$verbose=1 if $ENV{TERM}; # not to pollute cron mail

my $opt_arch;
our @LONGOPT=(
    'arch=s' => \$opt_arch,
    );
sub print_longopt {
    print "  altlinux-repolist options:
	--arch noarch,x86_64 the arches to use (default is all)
";
}
sub cli_container_ref {
    return ['ALTLinux::RepoList'];
}

# ------------------------------------------------------------

my $out_bin_names= $0 =~ /-to-bin-names$/;
my $out_bin_files= $0 =~ /-to-bin-files$/;
my $out_src_names= $0 =~ /-to-src-names$/;
my $out_src_files= $0 =~ /-to-src-files$/;
my $in_bin_names= $0 =~ /-bin-names-to-/;
my $in_bin_files= $0 =~ /-bin-files-to-/;
my $in_src_names= $0 =~ /-src-names-to-/;
my $in_src_files= $0 =~ /-src-files-to-/;

$ALTLinux::RepoList::need_bin=1 if $in_bin_names or $in_bin_files or $out_bin_names or $out_bin_files;
$ALTLinux::RepoList::need_src=1 if $in_src_names or $in_src_files or $out_src_names or $out_src_files;

__PACKAGE__->new()->get_and_process_cli_options();

my %arch_to_use;
sub process_options {
    map {$arch_to_use{$_}=1}  split(',',$opt_arch) if $opt_arch;
}

my (%srcname2srpm,%srpm2srpmpath,%srpm2srcname);
&ALTLinux::RepoList::process_src_lists(
sub {
    my ($name,$evr,$srpm,$reporoot)=@_;
    $srcname2srpm{$name}=$srpm;
    $srpm2srcname{$srpm}=$name;
    $srpm2srpmpath{$srpm}=$reporoot.'/files/SRPMS/'.$srpm;
});
my %in_srpm;
map {$in_srpm{$srcname2srpm{$_}}=1} @ALTLinux::RepoList::IN if $in_src_names;
map {$in_srpm{basename($_)}=1} @ALTLinux::RepoList::IN if $in_src_files;

if ($out_src_names) {
    print map {$_."\n"} sort {$a cmp $b} map {$srpm2srcname{$_}} keys(%in_srpm);
    exit;
} elsif ($out_src_files) {
    print map {$_."\n"} sort {$a cmp $b} map {$srpm2srpmpath{$_}} keys(%in_srpm);
}

my @out_brpms;
my @out_bnames;
&ALTLinux::RepoList::process_bin_lists(
sub {
    my ($name,$evr,$arch,$rpm,$srpm,$reporoot)=@_;
    return if $opt_arch and not $arch_to_use{$arch};
    if ($in_srpm{$srpm}) {
	push @out_bnames, $name;
	push @out_brpms, $reporoot.'/files/'.$arch.'/RPMS/'.$rpm;
    }
});

print map {$_."\n"} @out_bnames if $out_bin_names;
print map {$_."\n"} @out_brpms if $out_bin_files;

# ------------------------------------------------------------
