The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use strict;
use FindBin;
use File::Find;
use Text::Wrap;
use Pod::Simple::Text;

chdir "$FindBin::Bin/..";

my (@files, @pms, @pods);
find(sub { push @files, $File::Find::name if -f }, 'lib', 'bin'); 
find(sub { push @pms, $File::Find::name if -f }, 'lib/SVK/Command');
push @pms, 'lib/SVK/Resolve.pm', glob('lib/SVK/Help/*.pod');

my %strings;
foreach my $pm (@pms) {
    my $buf = '';
    my $parser = Pod::Simple::Text->new;
    $parser->output_string(\$buf);
    $parser->parse_file($pm);
    my $cur = '';
    foreach my $line (split(/\n\n+/, $buf)) {
	last if $line =~ /^AUTHORS/m;
	if ($line =~ /SVK::Command::(\w+ - .+)/) {
	    $strings{"\l$1"}++;
	}
	elsif ($line =~ /^([A-Z_]+)/) {
	    $strings{$1}++;
	}
	elsif (my @lines = $line =~ /^ {4}\s+(.+)\s*$/mg) {
	    foreach my $chunk (@lines) { 
		$chunk =~ s/ +: /: /;
		$strings{$chunk}++;
	    }
	}
        else {
            $strings{$line}++;
        }
    }
    next unless %strings;
}

if (%strings) {
    open my $fh, ">", "lib/SVK/Command.pod" or die $!;
    print $fh "{{$_}}\n" for sort keys %strings;
    close $fh;
    push @pods, "lib/SVK/Command.pod";
}

unlink("lib/SVK/I18N/i_default.po");
system("xgettext.pl", "-u", "-o", "lib/SVK/I18N/i_default.po", @files, @pods);
system($^X, "-pi", "-es/charset=CHARSET/charset=UTF-8/", "lib/SVK/I18N/i_default.po");
unlink $_ for @pods;