#!/usr/bin/perl

##- Nanar <nanardon@zarb.org>
##-
##- This program is free software; you can redistribute it and/or modify
##- it under the terms of the GNU General Public License as published by
##- the Free Software Foundation; either version 2, or (at your option)
##- any later version.
##-
##- This program is distributed in the hope that it will be useful,
##- but WITHOUT ANY WARRANTY; without even the implied warranty of
##- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
##- GNU General Public License for more details.
##-
##- You should have received a copy of the GNU General Public License
##- along with this program; if not, write to the Free Software
##- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

# $Id$

use strict;
use warnings;
use RPM4;
use Getopt::Long;

my ($showsrc, $tmp, @macros) = (1, $ENV{TMP} || '/tmp');

GetOptions(
    'define=s' => \@macros,
    'src!' => \$showsrc,
);

(@ARGV) or die 
"$0 file1 [file2 [...]] 
Give rpms filename produce by a specfile or a src.rpm

Options:
  --define \"macro value\"   define a macro into rpm land
  --no-src                   do not show the src.rpm
";

RPM4::addmacro("_sourcedir $tmp");
RPM4::addmacro("_specdir $tmp");

sub set_config {
    RPM4::readconfig();
    foreach (@macros) {
        RPM4::addmacro($_);
    }
}

sub specquery {
    my ($spec) = @_;
    $showsrc and print $spec->srcrpm ."\n";
    foreach my $bin ($spec->binrpm) {
        print "$bin\n";
    }
}

foreach my $file (@ARGV) {
    set_config();
    $file =~ m/\.src\.rpm$/ and do {
        if(my ($specfile) = RPM4::installsrpm($file)) {
            if (my $spec = RPM4::specnew($specfile, undef, undef)) {
                specquery($spec);
                $spec->build([qw(RMSOURCE RMSPEC)]);
            }
        }
        next;
    };
    $file =~ m/\.spec$/ and do {
        if (my $spec = RPM4::specnew($file, undef, undef)) {
            specquery($spec);
        }
        next;
    }
}