#!/usr/bin/perl
#
# makedoctree
#
# makes a directory of all documentation versions
#


## libraries
use strict;


## variables
my $cvs = 'cvs -d :pserver:anonymous@cvs.netmrg.net:/var/cvsroot';
my $docfile = "netmrg/share/doc/netmrg.sgml";
my $shortdocfile = "netmrg.sgml";
my $stylesheet = "netmrg/share/doc/netmrg.dsl";
my $shortssfile = "netmrg.dsl";
my $docfolder = "/tmp";
my @versions = ();


## forward declairations
sub GetTags();


## main
@versions = GetTags();
foreach my $ver (@versions)
{
	# make sure our doc directory exists
	my $curdir = "$docfolder/$ver";
	`rm -rf $curdir` if ( -d $curdir);
	mkdir ($curdir);

	# get the version specified
	# docfile
	my $doccontents = `$cvs co -p -r $ver $docfile 2> /dev/null`;
	open (DOC, ">$curdir/$shortdocfile");
	print DOC $doccontents;
	close (DOC);

	#stylesheet
	my $sscontents = `$cvs co -p -r $ver $stylesheet 2> /dev/null`;
	open (SS, ">$curdir/$shortssfile");
	print SS $sscontents;
	close (SS);

	# run docbook2html on the file
	if (-s "$curdir/$shortssfile")
	{
		`docbook2html -d $curdir/$shortssfile#html $curdir/$shortdocfile -o $curdir`;
	}
	else
	{
		`docbook2html $curdir/$shortdocfile -o $curdir`;
		symlink("$curdir/book1.html", "$curdir/index.html");
	}
	
	if ($ver eq "HEAD")
	{
		`rm -rf "$docfolder/CVSHEAD"`;
		rename("$docfolder/$ver", "$docfolder/CVSHEAD");
	} # end if head
	elsif ($ver =~ /^netmrg-(\d+)\_(\S+)/)
	{
		`rm -rf "$docfolder/NetMRG-$1.$2"`;
		rename("$docfolder/$ver", "$docfolder/NetMRG-$1.$2");
	} # end if ver looks like netmrg-0_10
} # end foreach version


## subroutines

##
# GetTags();
#
sub GetTags()
{
	my @tags = ("HEAD");
	my @rlog = split(/\n/, `$cvs rlog $docfile`);
	my $symnames = 0;
	
	foreach my $line (@rlog)
	{
		$symnames = 1 if ($line =~ /symbolic names/);
		last if ($line =~ /keyword sub/);
		push(@tags, $1) if ($symnames && $line =~ /^\s+(.*?):.*$/);
	} # end foreach line

	return @tags;
} # end GetTags();


