Introspection update
[gnumeric.git] / tools / release-do-CLog
blob5125732468236038e129849534df20a3ae66b98f
1 #!/usr/bin/perl -w
3 use strict;
5 die "$0: must be run from top-level directory.\n"
6 unless -r "configure.ac" && -r 'ChangeLog';
8 my $newversion = $ARGV[0];
9 die "$0: you must supply the new version as argument.\n"
10 unless $newversion;
12 my $email = $ENV{'EMAIL'};
13 die "$0: you must define \$EMAIL.\n"
14 unless defined $email;
16 my $name = $ENV{'NAME'};
17 die "$0: you must define \$NAME.\n"
18 unless defined $name;
20 my ($y,$m,$d) = (localtime (time))[5,4,3];
21 $y += 1900;
22 $m++;
23 my $date = sprintf ("%04d-%02d-%02d", $y, $m, $d);
25 my $entry = "$date $name <$email>\n\n\t* Release $newversion\n\n";
27 # -----------------------------------------------------------------------------
28 # These are shared directories.
29 my %exceptions = ('macros' => 1, 'intl' => 1);
31 my $clogstxt = `find . -name ChangeLog -print`;
32 chomp $clogstxt;
33 my @clogs = split ("\n", $clogstxt);
35 foreach my $filename (sort @clogs) {
36 my $dir = $filename;
37 $dir =~ s|/ChangeLog$||;
38 my $fulldir = $dir;
39 $dir =~ s|^\./||;
40 if ($exceptions{$dir} || $fulldir =~ m{/tools/win32/}) {
41 print "Skipping $filename\n";
42 next;
45 local (*SRC);
46 local (*DST);
47 print "Updating $filename...\n";
49 open (*SRC, "<$filename") || die "$0: failed to read $filename: $!\n";
50 open (*DST, ">$filename.tmp") || die "$0: failed to write $filename.tmp: $!\n";
51 print DST $entry;
52 foreach (<SRC>) { print DST; }
53 close (*DST);
54 close (*SRC);
56 rename ("$filename.tmp", $filename);