From: Florian Forster Date: Wed, 20 May 2015 20:25:28 +0000 (+0200) Subject: contrib/wiki2changelog.pl: Add script converting from wiki to ChangeLog. X-Git-Tag: collectd-5.5.0~17 X-Git-Url: https://git.octo.it/?p=collectd.git;a=commitdiff_plain;h=5c454c02b7239771f2a0213bab5cf76e0ba5984b contrib/wiki2changelog.pl: Add script converting from wiki to ChangeLog. --- diff --git a/contrib/wiki2changelog.pl b/contrib/wiki2changelog.pl new file mode 100755 index 00000000..9631091b --- /dev/null +++ b/contrib/wiki2changelog.pl @@ -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#<#<#g; + $line =~ s#>#>#g; + $line =~ s# # #g; + $line =~ s#"#"#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#(.*?)#"$1"#gi; + + print format_line($line); +}