#!/usr/bin/perl -- # -*- Perl -*- use strict; use Getopt::Std; use vars qw($opt_v $opt_n $opt_d); select STDOUT; $| = 1; my $usage = "Usage: $0 [-d] [-v version] [-n newversion]\n"; die $usage if ! getopts('dv:n:'); my $oldversion = $opt_v || undef; my $newversion = $opt_n || undef; die $usage if !$oldversion || !$newversion; die "You must be in the DocBook DTD directory.\n" unless -f "docbook.dtd" || -f "docbookx.dtd"; my @cvsbad = `cvs -n update 2>&1 | grep -v ^cvs`; if (@cvsbad) { print STDERR @cvsbad; die "CVS is not up-to-date!\n"; } my $xml = -f "docbookx.dtd"; my $distribdir = "docbook-$newversion"; $distribdir = "docbook-xml-$newversion" if $xml; my $distribroot = "/tmp/$distribdir"; if ($opt_d) { print "Making distribution for $newversion\n"; system("rm -rf $distribroot"); mkdir($distribroot, 0755) || die "Failed to create $distribroot.\n"; } else { print "Changing $oldversion to $newversion\n"; } opendir (DIR, "."); while (my $name = readdir(DIR)) { next if -d $name; next if $name =~ /\~$/; next if $name eq '.cvsignore'; next if $name eq 'Makefile'; next if $name =~ /^test\./; my $file = $name; open (F, $file); read (F, $_, -s $file); close (F); my $newfile = $file; $newfile = "$distribroot/$name" if $opt_d; s/$oldversion/$newversion/sg; open (F, ">$newfile"); print F $_; close (F); } closedir (DIR); if ($opt_d && !$xml) { opendir (DIR, "../xml"); while (my $name = readdir(DIR)) { next if -d $name; next if $name =~ /\~$/; next if $name eq '.cvsignore'; next if $name eq 'Makefile'; next if $name =~ /^test\./; my $file = "../xml/$name"; open (F, $file); read (F, $_, -s $file); close (F); my $newfile = $file; $newfile = "$distribroot/$name" if $opt_d; s/$oldversion/$newversion/sg; if (! -f $newfile) { open (F, ">$newfile"); print F $_; close (F); } } closedir (DIR); } if ($opt_d) { chdir ("/tmp"); system ("tar cf - $distribdir | gzip > $distribdir.tar.gz"); system ("zip -rpD $distribdir.zip $distribdir"); }