summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/addchangelog.pl21
-rwxr-xr-xtools/cvslog2changelog.pl67
-rwxr-xr-xtools/mailchangelog.pl12
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>;