contrib/wiki2changelog.pl: Add script converting from wiki to ChangeLog.
authorFlorian Forster <octo@collectd.org>
Wed, 20 May 2015 20:25:28 +0000 (22:25 +0200)
committerFlorian Forster <octo@collectd.org>
Wed, 20 May 2015 20:25:28 +0000 (22:25 +0200)
contrib/wiki2changelog.pl [new file with mode: 0755]

diff --git a/contrib/wiki2changelog.pl b/contrib/wiki2changelog.pl
new file mode 100755 (executable)
index 0000000..9631091
--- /dev/null
@@ -0,0 +1,75 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+=head1 NAME
+
+wiki2changelog.pl
+
+=head1 DESCRIPTION
+
+This script takes the change log from one of the "Version x.y" pages in
+collectd's wiki and converts it to the format used by the "ChangeLog" file.
+This is usually done as part of the release process.
+
+=cut
+
+our $TextWidth = 80;
+
+sub format_entry
+{
+       my $in = shift;
+       my $out = '';
+
+       my $line = "\t*";
+       my $line_len = 9;
+
+       for (split (' ', $in)) {
+               my $word = $_;
+               my $word_len = 1 + length $word;
+
+               if (($line_len + $word_len) > $TextWidth) {
+                       $out .= "$line\n";
+                       $line = "\t ";
+                       $line_len = 9;
+               }
+
+               $line .= " $word";
+               $line_len += $word_len;
+       }
+
+       if ($line_len != 9) {
+               $out .= "$line\n";
+       }
+
+       return $out;
+}
+
+while (<>)
+{
+       chomp;
+       my $line = $_;
+
+       if ($line =~ m#^\* (.*)#) {
+               $line = $1;
+       } else {
+               next;
+       }
+
+       $line =~ s#&lt;#<#g;
+       $line =~ s#&gt;#>#g;
+       $line =~ s#&nbsp;# #g;
+       $line =~ s#&quot;#"#g;
+
+       $line =~ s#\{\{Plugin\|([^}]+)\}\}#$1 plugin#g;
+       $line =~ s@\{\{Issue\|([^}]+)\}\}@#$1@g;
+       $line =~ s#\[\[[^|]+\|([^\]]+)\]\]#$1#g;
+       $line =~ s#\[\[([^|]+)\]\]#$1#g;
+
+       $line =~ s#'''(.*?)'''#*$1*#g;
+       $line =~ s#''(.*?)''#$1#g;
+       $line =~ s#<code>(.*?)</code>#"$1"#gi;
+
+       print format_line($line);
+}