diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/addchangelog.pl | 21 | ||||
-rwxr-xr-x | tools/cvslog2changelog.pl | 67 | ||||
-rwxr-xr-x | tools/mailchangelog.pl | 12 |
3 files changed, 100 insertions, 0 deletions
diff --git a/tools/addchangelog.pl b/tools/addchangelog.pl new file mode 100755 index 000000000..eff3e76ea --- /dev/null +++ b/tools/addchangelog.pl @@ -0,0 +1,21 @@ +#!/usr/bin/perl + +@ARGV == 2 or die "usage $0: <dir> <cvslog2changelog script>\n"; + +($dir, $script) = @ARGV; + +chomp(my $cwd = `pwd`); +$script = "$cwd/$script" if $script !~ m|^/|; + +chdir $dir; +$date = (split('/', `grep ChangeLog CVS/Entries`))[3]; + +@changelog = `cvs log -d ">$date" | $script`; +@before = `cat ChangeLog`; + +print foreach @changelog; + +open F, ">ChangeLog"; +print F foreach @changelog, @before; + +system(q(cvs commit -m "New snapshot uploaded" ChangeLog)); diff --git a/tools/cvslog2changelog.pl b/tools/cvslog2changelog.pl new file mode 100755 index 000000000..4b33fed45 --- /dev/null +++ b/tools/cvslog2changelog.pl @@ -0,0 +1,67 @@ +#!/usr/bin/perl + +while (<>) { + if ($e = /^description:/ .. /^={77}/) { + next if $e == 1 || $e =~ /E0/; + if (/^-{28}/ .. /^date: /) { + if (/^date: (\S+)\s.*author: (\S+);/) { + ($date, $user) = ($1, $2); + } + } elsif (!/^branches: / && !/file .* was initially added on branch/ && !/empty log message/ && !/no_comment/) { + $l{$date}{$user}{$file} .= $_; + } + } elsif (/Working file: (.*)/) { + $file = $1; + } +} + +foreach $date (reverse sort keys %l) { + foreach $user (sort keys %{$l{$date}}) { + $fuser = $users{$user} || $user; + print "$date $fuser\n\n"; + my %inv; + while (($file, $log) = each %{$l{$date}{$user}}) { + $log =~ s/^\s+( \*)?//ms; + $log =~ s/\s+$//ms; + push @{$inv{$log}}, $file; + } + foreach $log (keys %inv) { + $line = join(', ', @{$inv{$log}}) . ($log !~ /^\(/ && ':') . " $log"; + print "\t* ", join("\n\t", auto_fill($line, 72)), "\n\n"; + } + } +} + +1; + +sub auto_fill { + my ($line, $col) = @_; + map { + my @l; + my $l = ''; + while ($_) { + s/^(\s*)(\S*)//; + my $m = "$l$1$2"; + if (length $m > $col) { + push @l, $l; + $l = $2; + } else { + $l = $m + } + } + @l, $l; + } split("\n", $line); +} + +BEGIN { + %users = ( + 'gc' => 'Guillaume Cottenceau <gc@mandrakesoft.com>', + 'fpons' => 'François Pons <fpons@mandrakesoft.com>', + 'pablo' => 'Pablo Saratxaga <pablo@mandrakesoft.com>', + 'damien' => 'dam\'s <damien@mandrakesoft.com>', + 'install' => 'DrakX <install@linux-mandrake.com>', + 'prigaux' => 'Pixel <pixel@mandrakesoft.com>', + 'flepied' => 'Frederic Lepied <flepied@mandrakesoft.com>', + 'chmouel' => 'Chmouel Boudjnah <chmouel@mandrakesoft.com>', + ); +} diff --git a/tools/mailchangelog.pl b/tools/mailchangelog.pl new file mode 100755 index 000000000..88320a061 --- /dev/null +++ b/tools/mailchangelog.pl @@ -0,0 +1,12 @@ +#!/usr/bin/perl + +open F, '| /usr/sbin/sendmail -f devel@mandrakesoft.com'; + +print F +q(Subject: [DrakX] new DrakX snapshot uploaded +From: devel@mandrakesoft.com +To: changelog@linux-mandrake.com, install@mandrakesoft.com +Reply-To: install@mandrakesoft.com + +); +print F foreach <STDIN>; |