#!/usr/bin/perl use FindBin; use lib "$FindBin::Bin/"; require kettext; if ($#ARGV+1 == 0) { showUsage(); exit; } my @files; my $file_name; my $output = 0; my $output_file; my $converter = "HTML"; my %cmd_settings = (); for (my $arg_i = 0; $arg_i < $#ARGV+1; $arg_i++) { if ($ARGV[$arg_i] =~ m/^-(-|)(.*)/) { if ($2 =~ m/^(h(elp|))$/) { showUsage(); exit; } elsif ($2 =~ m/^(o(ut|utput|))$/) { $output = 1; } elsif ($2 =~ m/^(convert(To|))=(.*)$/) { $converter = $3; } else { if ($2 =~ m/^(.[^\=]*)(\=|)(.*|)/) { $cmd_settings{$1} = (length($3) ? $3 : 1); } } } else { if ($output == 1) { $output_file = $ARGV[$arg_i]; $output = 2; } else { push @files, $ARGV[$arg_i]; $file_name = $ARGV[$arg_i]; } } } if ($output > 0) { if (!$output_file) { print "No output file specified!\n"; exit 1; } else { open STDOUT, '>', $output_file; } } if (my $sub_ref = kettext::convertTo->can($converter)) { foreach (@files) { my %parsed_file = kettext::parseFile($_, \%cmd_settings); $sub_ref->(%parsed_file); } } else { print "Converter \"$converter\" could not be found!\n"; exit 2; } sub showUsage { print "Usage: kettext.pl *.ktx [options]\n"; print " --help\n"; print " show this help screen\n"; print " --group.setting=val\n"; print " set parse/convert setting (e.g., \"--header.numbering\", \"--header.depth=2\")\n"; print " --convert=, --convertTo=OUTPUT\n"; print " sets the output converter. Default: HTML\n"; print " --o, --out, --output filename\n"; print " sets the output file. Default: stdout\n"; }