#!/usr/bin/perl -w
#
# print directory with RPMs for upgrades.
# 

use strict;

sub usage {
    print STDERR "Usage: $0 directory\n";
    exit(1);
}

local $| = 1;
my $verbose=0;

my $dir;
if (defined($ARGV[0]) && -d $ARGV[0]) {
    $dir = $ARGV[0];
} else {
    usage();
}

open(PKGLIST, "rpm -qp --queryformat '%{NAME} %{VERSION} %{RELEASE}\n' $dir/*.rpm |") 
    or die "cannot invoke rpm -qp: $!";
while (<PKGLIST>) {
    chomp;
    my ($name1, $version1, $release1) = split;
    my $pkg1 = "$name1-$version1-$release1";
    $verbose && print "package: $pkg1\n";

    my ($name0, $version0, $release0) = ('', '', '');
    my $cmd = "rpm -q --queryformat '%{NAME} %{VERSION} %{RELEASE}\n' $name1 |";
    $verbose > 1 && print "executing $cmd\n";
    open(CHKPKG, $cmd)
	or die "cannot invoke rpm -q $pkg1: $!";
    while (<CHKPKG>) {
	($name0, $version0, $release0) = split;
    }
    close(CHKPKG);
    my $pkg0 = "$name0-$version0-$release0";
    $verbose && print "installed: $pkg0\n";

    if ($name0 &&  $pkg0 ne $pkg1) {
	print "upgrade $pkg0 to $pkg1\n";
    }
}
	
# vim:tw=132:nowrap
