#!/usr/bin/perl
# Copyright (c)2002 Norbert Kiesel <nk@iname.com>
# Feta plugin for querying available packages. 
# A rewrite of the shell script written by Graham Williams and Kayon Toga.
# Licensed under the GNU GPL.

# option -q => suppress header
# option -e => surround pattern with ^ and $
# option -f => regexp-quote pattern (like "grep -F")
# option -y, -t, -v => ignored

use Getopt::Std;
getopts('qytVef', \%opt);

if (scalar(@ARGV) == 0) {
 print STDERR "E: You must provide at least one package name or wildcard.\n";
 exit 1;
}

@ARGV = map { quotemeta } @ARGV if $opt{f};
$pat = join('|', @ARGV);
$pat = "^($pat)\$" if $opt{e};

open CACHE, "apt-cache dumpavail |";
while (<CACHE>) {
  chomp; 
  $pkg = $1, $packages{$1}++ if /^Package: (.+)/;
  $available{$pkg} = $1 if /^Version: (.+)/;
}

open STATUS, "< /var/lib/dpkg/status";
while (<STATUS>) {
  chomp;
  $pkg = $1, $packages{$1}++ if /^Package: (.+)/;
  $s = $1 if /^Status: \w+ \w+ (.+)/;
  $installed{$pkg} = $1 if /^Version: (.+)/ && $s eq 'installed';
}

print 'Package                            Available                     Installed
================================================================================
' unless $opt{'q'};

foreach $p (sort keys %packages) {
  write if $p =~ /$pat/;
}

format STDOUT =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<
$p, $available{$p}, $installed{$p}
.

