#!/usr/bin/perl

use strict;
use warnings;
use POSIX;

my $title = shift @ARGV;

print <<EOF;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
 <head>
  <title>OSGeo4W: $title</title>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 </head>
 <body>
<h1>OSGeo4W: $title</h1>
EOF

my %pkg;
my $pkg;
while(<>) {
	chop;
	if(/^@ (.*)$/) {
		$pkg = $1;
	} elsif(defined $pkg && /^version: (.*)$/) {
		$pkg{$pkg}{version} = $1 unless defined $pkg{$pkg}{version};
	} elsif(defined $pkg && /^category:\s+_obsolete\s*$/ ) {
		$pkg{$pkg}{obsolete} = 1;
	} elsif(defined $pkg && !exists $pkg{$pkg}{maintainer} && /^install:\s+\.\/(\S+)\/([^\/]+)\s+(\d+)\s+(\S+)$/) {
		my $dir = $1;
		#print STDERR "dir: $dir\nfile: $2\nsize: $3\nmd5: $4\n";

		if( -r "$dir/setup.hint" ) {
			open F, "$dir/setup.hint";
			while(<F>) {
				chop;
				if(/^maintainer:\s+(.*)$/ ) {
					$pkg{$pkg}{maintainer} = $1;
				}
			}
			close F;
		}
	} elsif( /^$/ ) {
		undef $pkg;
	}
}

#print "<table border=1>\n";
#print "<tr><th>Package</th><th>Version</th><th>Maintainer</th></tr>\n";
print "<ul>\n";
foreach my $pkg (sort keys %pkg) {
#	print "<tr>";
#	print "<td>" . $pkg . "</td>";
#	print "<td>" . ($pkg{$pkg}{version} || "unknown" ) . "</td>";

	print "<li>$pkg" if defined $pkg{$pkg}{version};
	print ", $pkg{$pkg}{version}" if defined $pkg{$pkg}{version};
	print " (obsolete)" if exists $pkg{$pkg}{obsolete};

	my $maintainer = $pkg{$pkg}{maintainer}; 
	if( defined $maintainer ) {
#		print "<td><a href=\"http://trac.osgeo.org/osgeo4w/wiki/$maintainer\">$maintainer</a></td>";
		print ", <a href=\"http://trac.osgeo.org/osgeo4w/wiki/$maintainer\">$maintainer</a></td>";
	} else {
#		print "<td>&nbsp;</td>";
	}

#	print "</tr>\n";
}
#print "</table>\n";
print "</ul>\n";

print '<hr><small><i>Last updated: ' . ctime(time) . '</i></small>'
    . '<p><address>OSGeo4W: <a href="http://trac.osgeo.org/osgeo4w/">http://trac.osgeo.org/osgeo4w/</a></address>'
    . '</body></html>';
