#!/usr/bin/perl -w
# -----------------------------------------------------------------------------

# Note: this isn't perfect, but a very fine start.

my $version = $ARGV[0];
die "$0: must specify version number as argument.\n" unless $version;

my $version2 = $version;
$version2 =~ s/^(\d+\.\d+)\..*/$1/;

my $bug_prefix = "https://bugzilla.gnome.org/show_bug.cgi?id=";

my $state = 0;
my $who = undef;
my $item = '';
my $have_item = 0;
my $bug = undef;
my $module = undef;

open (FIL, "<NEWS") or die "$0: cannot open NEWS: $!\n";
while (<FIL>) {
    chomp;

    if (/^(Gnumeric|goffice|libgsf)\s*([^ :]*)\s*:?\s*$/i) {
	if ($2 eq $version) {
	    $state = 1;
	    $module = $1;

	    &prolog ();
	}
	next;
    }

    if (/^-+$/) {
	$state = 0;
	next;
    }

    if ($state == 1) {
	if (/^(.*\S)\s*:\s*$/) {
	    &finish_author () if $who;
	    $who = $1;
	    $have_item = 0;
	    next;
	}

	if (s/^\s+\*\s*//) {
	    &finish_item () if $have_item;
	    $item .= "      <li>";
	    &add_to_item ($_);
	    next;
	}

	if (m{^\s+http://bugzilla\.gnome\.org/show_bug\.cgi\?id=(\d+)\s*}) {
	    my $this_bug = $1;
	    &finish_item () if $have_item;
	    $bug = $this_bug;
	    next;
	}

	if ($have_item && s/^\s+//) {
	    &add_to_item ($_);
	    next;
	}
    }
}
close (FIL);
&finish_author () if $who;

&epilog ();

# -----------------------------------------------------------------------------

sub finish_author {
    &finish_item () if $have_item;

    print "  <li>$who\n";
    print "    <ul>\n";
    print $item;
    print "    </ul>\n";
    $item = '';
    $who = undef;
}

sub finish_item {
    if ($item && $item !~ /[.?!]\s*$/) {
	$item .= ".";
    }
    if ($bug) {
	$item .= " (<a href=\"$bug_prefix$bug\">Bug $bug</a>.)";
	$bug = '';
    }
    $item =~ s/\s+$//;
    $item .= "\n      </li>\n";
    $have_item = 0;
}

sub add_to_item {
    my ($txt) = @_;

    $txt =~ s{\#(\d\d\d\d\d+)}{<a href=\"$bug_prefix$1\"\>Bug $1</a>}g;

    $item .= "\n\t$txt";
    $have_item = 1;
}

# -----------------------------------------------------------------------------

sub prolog {
    print "<!--#set var=\"title\" value=\"$module $version\" -->";
    print "<!--#set var=\"rootdir\" value=\"../..\" -->";
    print "<!--#include virtual=\"../../header-begin.shtml\" -->\n";
    print "<!--#include virtual=\"../../header-end.shtml\" -->\n\n";

    print "  <h2>$module $version aka &quot;TBD&quot; is now available.</h2>\n";
    print "  <p>The Gnumeric Team is pleased to announce the availability of\n";
    print "  $module version $version.</p>\n";
    print "  <p>Noteworthy news in this release:</p>\n";
    print "  <ul>\n";
    print "  <li>...</li>\n";
    print "  </ul>\n\n";
    print "  <ul>\n";
}

# -----------------------------------------------------------------------------

sub epilog {
    my $link = "http://ftp.gnome.org/pub/GNOME/sources/" . lc $module . "/$version2/";

    print "  </ul>\n";

    print "  <h2>Availability</h2>\n";
    print "  <blockquote>\n";
    print "    <a href=\"$link\">$link</a>\n";
    print "  </blockquote>\n";

    print "<!--#include virtual=\"../../footer.shtml\" -->\n";
}

# -----------------------------------------------------------------------------
