#!/usr/bin/perl -w

# lfr - list fresh rpms, i.e. highest versions from local repository
#
# Usage, in bash:
#   for i in *.rpm; do echo $i; done | lfr

use strict;
use RPM::VersionSort;
use RPM2;
my %pkgs;

while (<>) {
        chomp;
        die "$0: Unable to open $_\n" unless -e $_ and -r $_;
        my $pkg   = RPM2->open_package($_);
        my $id    = $pkg->name() . '.' . $pkg->arch();
        my $epoch = $pkg->epoch() || 0;
        my $vr    = $pkg->version() . '-' . $pkg->release();
        push @{ $pkgs{$id} }, [ $epoch, $vr, $_ ];
}

for my $id ( sort keys %pkgs ) {

        my @sorted = sort {

                        $b->[0] <=> $a->[0] 
                                ||
                        rpmvercmp( $b->[1], $a->[1] )

                     } @{$pkgs{$id}};

        print $sorted[0][2], "\n";
}
