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 )