#!/usr/bin/perl
#
# rpmgroups - script for making index of rpm packages organized by group
#
# Author: Jonathan Stigelman <Stig@hackvan.com>
#
# Inspired by an awk script written by hubicka@paru.cas.cz

open(PKG, 'rpm --qf "%{GROUP}!!%{NAME}!!%{SIZE}!!%{SUMMARY}\n" -qa  | sort |')
    or die("couldn't execute rpm: $!");

my $cur_group = "NONE";
my $group_size = 0;
my $group_data = 0;
my $rpm_size = 0;		# size of all files under RPM control.

sub print_group () {
    if ($group_size > 0) {
        print  "$cur_group\n", ('-' x 79), "\n", $group_data;
	printf "%20s %5dk\n\n", "total... ", ($group_size / 1024);
	$rpm_size += $group_size;
    }
    $group_size = 0;
    $group_data = "";
}

while (<PKG>) {
    chop;			# remove newline
    my ($group, $name, $size, $summary) = split(/!!/);

    if ($cur_group ne $group) {
	print_group();

	$cur_group = $group;
    }

    $group_size += $size;
    
    $group_data .= sprintf "%-20s %5dk   %s\n", $name, ($size/1024), $summary;
}

print_group();

printf "\n%20s %3.2f megs\n", 'ALL FILES:', ($rpm_size / 1024 / 1024);

