#!/usr/bin/env perl

# Generate a flat text file of tags from EIS/cvs

my $DEFAULT_MASTER='SRC680';

# Change this to the current RC branch
my $RELEASE_MASTER='OOG680';

print "# List of the last thre master workspaces\n";
print "# <name> : <master-tag> : <master-tag> : <modules>\n";

my $CvsRoot;

my @latestmasters = ();
`mkdir -p /tmp/cvstmp`;
`cd /tmp/cvstmp && cvs -d :pserver:anoncvs\@anoncvs.services.openoffice.org:/cvs co -A solenv/inc/minor.mk`;
open ($CvsRoot, 'cd /tmp/cvstmp && cvs -d :pserver:anoncvs@anoncvs.services.openoffice.org:/cvs status -v solenv/inc/minor.mk | awk \'/^\t'.$DEFAULT_MASTER.'/{print $1}\' | head -n 3 |') || return 0;
while (<$CvsRoot>) {
    my $elem = $_;
    chomp $elem;
    push @latestmasters, $elem if ($elem ne '');
}

# Add release branch milestones
open ($CvsRoot, 'cd /tmp/cvstmp && cvs -d :pserver:anoncvs@anoncvs.services.openoffice.org:/cvs status -v solenv/inc/minor.mk | awk \'/^\t'.$RELEASE_MASTER.'/{print $1}\' | head -n 2 |') || return 0;
while (<$CvsRoot>) {
    my $elem = $_;
    chomp $elem;
    push @latestmasters, $elem if ($elem ne '');
}


my @modules = ();
my $reading_modules = 0;
open ($CvsRoot, "cvs -d :pserver:anoncvs\@anoncvs.services.openoffice.org:/cvs co -c 2>&1 |") || return 0;
while (<$CvsRoot>) {
    $reading_modules = 0 if (/^\S/);
    $reading_modules = '1' if (/^OpenOffice2\s+\-a\s+/);
    if ($reading_modules) {
	chomp;
	s/^.*\-a//;
	for my $elem (split (/ +/, $_)) {
	    push @modules, $elem if ($elem ne '');
	}
    }
}
close ($CvsRoot) || return 0;

for my $mastermod (@latestmasters) {
    print "$mastermod : $mastermod : $mastermod : @modules\n";
}
