Alvis-Convert
view release on metacpan or search on metacpan
bin/alvisXMLmerge view on Meta::CPAN
#!/usr/bin/perl -w
use strict;
use Getopt::Long;
use Pod::Usage;
use Encode;
use File::Copy;
use File::Path;
use encoding 'utf8';
use open ':utf8';
use Time::HiRes qw(gettimeofday tv_interval);
use Alvis::Utils qw(absolutize_path open_file get_files);
####################### global vars
my $VERBOSE = 1;
my $DEBUG = 0;
################################################################################
# main sub
# TODO: optimize reqexp
# TODO: performance
my ($orig_dir, $extra_dir, $out_dir, $config_file, $bzip2, $extra_file) =
read_params();
my %config = read_config($config_file);
my %extra_all = read_extra_file($extra_file, keys %config)
if (defined($extra_file));
for my $file (get_files($orig_dir)) {
merge_file($file);
}
################################################################################
sub read_params
{
my ($orig_dir, $extra_dir, $out_dir, $config_file, $bzip2, $extra_file);
GetOptions(
'<>' => sub {$orig_dir = shift},
'man' => sub {pod2usage(-exitstatus => 0, -verbose => 2)},
'e|extra=s' => \$extra_dir,
'extra-file=s' => \$extra_file,
'o|out=s' => \$out_dir,
'c|conf=s' => \$config_file,
'z|bzip2' => \$bzip2,
'h|help' => sub {pod2usage(1)}
);
pod2usage(-message => "ERROR: input dir is not specified")
if (!defined($orig_dir));
pod2usage(-message => "ERROR: extra dir or file is not specified")
if (!defined($extra_dir) and !defined($extra_file));
pod2usage(-message => "ERROR: $extra_file is not a file")
if (defined($extra_file) and !(-f $extra_file));
pod2usage(-message => "ERROR: output dir is not specified")
if (!defined($out_dir));
pod2usage(-message => "ERROR: cofiguration file is not specified")
if (!defined($config_file));
$orig_dir = absolutize_path($orig_dir);
pod2usage(-message => "ERROR: input dir does not exist")
if (!defined($orig_dir));
if (defined($extra_dir)) {
$extra_dir = absolutize_path($extra_dir);
pod2usage(-message => "ERROR: extra dir does not exist")
if (!defined($extra_dir));
} elsif (defined($extra_file)) {
$extra_file = absolutize_path($extra_file);
pod2usage(-message => "ERROR: extra file does not exist")
if (!defined($extra_file));
} else {
pod2usage(
-message => "ERROR: extra file or extra dir must be specified");
}
$out_dir = absolutize_path($out_dir);
( run in 2.792 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )