#! /usr/bin/perl
# By Jim Pick <jim@jimpick.com>, released to the public domain

if ($#ARGV != 0) {
    die "Usage: cat packagelist | sort-by-maintainer Maintainers\n";
} 

$maintainersfile = shift @ARGV;
open(MAINT,"<$maintainersfile") ||
    die "Argh! Couldn't open $maintainersfile\n";
while (<MAINT>) {
    m/^(\S+)\s+(\S.*)$/;
    $pkgmaint{$1} = $2;
}

while (<>) {
    chomp;
    @packages = split;
    foreach $package (@packages) {
        $package =~ s/_.*$//;
        if ($pkgmaint{$package} =~ m/^\s*$/) { next; }
        push @{$maintainer{$pkgmaint{$package}}}, $package;
    }
}

# Lifted from debbugs
sub maintsort {
    $_= $_[0];
    s/([^<>()]+) \(([^()<>]+)\)/$2 \<$1\>/;
    
    s/\s+/ /g;
    s/^\s*//;
    $email= s/ *\<[^<>()]+\>$//g ? $& : '';
    $_= "$1 $_" if s/ (\S+)$//;
    $_.= $email;
    $_;
}

foreach $maint (sort { maintsort($a) cmp maintsort($b); } keys %maintainer) {
    print "$maint:\n";
    print "  @{$maintainer{$maint}}\n\n";
}
