From 5c454c02b7239771f2a0213bab5cf76e0ba5984b Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Wed, 20 May 2015 22:25:28 +0200 Subject: [PATCH] contrib/wiki2changelog.pl: Add script converting from wiki to ChangeLog. --- contrib/wiki2changelog.pl | 75 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100755 contrib/wiki2changelog.pl 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); +} -- 2.11.0