#!/usr/bin/perl -w use strict; use Getopt::Long; use File::Path; my $NAME = 'unacorn'; sub usage() { print STDERR "usage: $0 --version \n"; } my $opt_version; if (not GetOptions('version=s' => \$opt_version) or not defined $opt_version) { usage(); exit(1); } my $dir = "../$NAME-$opt_version"; die "$dir already exists" if -e $dir; # Filename, and a regexp to capture the version in $1. my %check_ver; foreach (qw(README unacorn_files unacorn_mf)) { $check_ver{$_} = "\\b$NAME\\s+version\\s+(\\S+)"; } foreach my $f (keys %check_ver) { my $re = $check_ver{$f}; open(FD, $f) or die "cannot open $f: $!"; my $got; while () { chomp; if (/$re/i) { $got = $1; die if not defined $got; $got =~ s/\.$//; if ($got ne $opt_version) { die "$f:$.:found version $got, not $opt_version\n"; } else { last } } } if (not defined $got) { die "could not find version number in $f (regexp $re)\n"; } close FD or die "cannot close $f: $!"; print "Version number in $f is correct.\n"; } if (system 'cvs2cl') { warn "could not run cvs2cl: $!"; unlink 'ChangeLog'; exit(1); } if (not -f 'ChangeLog') { die "cvs2cl failed to create ChangeLog\n"; } mkdir $dir or die "cannot mkdir $dir: $!"; system('cp', '-avi', '.', $dir) && die "failure running cp: $!"; chdir $dir or die "cannot chdir to $dir: $!"; my $tmp = 'ChangeLog.tmp'; die "$tmp exists" if -e $tmp; open(CH_OUT, ">$tmp") or die "cannot write to $tmp: $!"; foreach my $f (qw(ChangeLog ChangeLog.before-RCS)) { open(CH, $f) or die "cannot open $f: $!"; while () { print CH_OUT $_ } close CH or die "cannot close $f: $!"; unlink $f or die "cannot unlink $f: $!"; } rename($tmp, 'ChangeLog') or die "cannot rename $tmp: $!"; close CH_OUT or die "cannot close $tmp: $!"; rmtree([ qw(CVS mkdist ChangeLog.bak) ], 1, 1); print "$dir\n";