hush warning
[webpac2] / run.pl
diff --git a/run.pl b/run.pl
index 11187ab..a98aadc 100755 (executable)
--- a/run.pl
+++ b/run.pl
@@ -12,7 +12,7 @@ use WebPAC::Input 0.16;
 use WebPAC::Store 0.14;
 use WebPAC::Normalize 0.22;
 use WebPAC::Output::TT;
-use WebPAC::Validate 0.06;
+use WebPAC::Validate 0.11;
 use WebPAC::Output::MARC;
 use WebPAC::Config;
 use Getopt::Long;
@@ -21,6 +21,7 @@ use Time::HiRes qw/time/;
 use File::Slurp;
 use Data::Dump qw/dump/;
 use Storable qw/dclone/;
+use Pod::Usage qw/pod2usage/;
 
 use Proc::Queue size => 1;
 use POSIX ":sys_wait_h"; # imports WNOHANG
@@ -31,7 +32,7 @@ run.pl - start WebPAC indexing
 
 B<this command will probably go away. Don't get used to it!>
 
-Options:
+=head1 OPTIONS
 
 =over 4
 
@@ -67,6 +68,16 @@ and subfield usage for each input
 
 turn on extra validation of imput records, see L<WebPAC::Validation>
 
+=item --validate-delimiters path/to/validate_delimiters_file
+
+this option is used with C<--validate> to turn on extra validation of
+delimiters. If file is non existant, it will be created on first run.
+
+=item --marc-generate
+
+Generate MARC file. This will automatically be on if file contains C<marc*> directives.
+You can use this option as C<--no-marc-generate> to disable MARC generation.
+
 =item --marc-lint
 
 By default turned on if normalisation file has C<marc*> directives. You can disable lint
@@ -102,11 +113,14 @@ my $debug = 0;
 my $only_filter;
 my $stats = 0;
 my $validate_path;
+my $validate_delimiters_path;
+my $marc_generate = 1;
 my $marc_lint = 1;
 my $marc_dump = 0;
 my $parallel = 0;
 my $only_links = 0;
 my $merge = 0;
+my $help;
 
 my $log = _new WebPAC::Common()->_get_logger();
 
@@ -120,13 +134,18 @@ GetOptions(
        "debug+" => \$debug,
        "stats" => \$stats,
        "validate=s" => \$validate_path,
+       "validate-delimiters=s" => \$validate_delimiters_path,
+       "marc-generate!" => \$marc_generate,
        "marc-lint!" => \$marc_lint,
        "marc-dump!" => \$marc_dump,
        "parallel=i" => \$parallel,
        "only-links!" => \$only_links,
        "merge" => \$merge,
+       "help" => \$help,
 );
 
+pod2usage(-verbose => 2) if ($help);
+
 my $config = new WebPAC::Config( path => $config_path );
 
 #print "config = ",dump($config) if ($debug);
@@ -151,12 +170,12 @@ if ($merge) {
        $log->info("created merge batch file $estcmd_path");
 }
 
-
 my $validate;
 $validate = new WebPAC::Validate(
        path => $validate_path,
-) if ($validate_path);
-
+       delimiters => $config->webpac('delimiters'),
+       delimiters_path => $validate_delimiters_path,
+) if ($validate_path || $validate_delimiters_path);
 
 my $use_indexer = $config->use_indexer;
 $stats ||= $validate;
@@ -426,7 +445,7 @@ while (my ($database, $db_config) = each %{ $config->databases }) {
                }
 
                my $marc;
-               if ($parser->have_rules( 'marc', $database, $input_name )) {
+               if ($marc_generate && $parser->have_rules( 'marc', $database, $input_name )) {
                        $marc = new WebPAC::Output::MARC(
                                path => "out/marc/${database}-${input_name}.marc",
                                lint => $marc_lint,
@@ -532,7 +551,7 @@ while (my ($database, $db_config) = each %{ $config->databases }) {
                                        $marc->add(
                                                id => $mfn . ( $i ? "/$i" : '' ),
                                                fields => $fields,
-                                               leader => WebPAC::Normalize::marc_leader(),
+                                               leader => WebPAC::Normalize::_get_marc_leader(),
                                                row => $row,
                                        );
                                        $i++;
@@ -548,6 +567,8 @@ while (my ($database, $db_config) = each %{ $config->databases }) {
                                $log->info("validation errors:\n$errors\n" );
                                print $report_fh "$errors\n" if ($report_fh);
                        }
+
+                       print $report_fh "\nAll possible subfields/delimiter templates:\n", $validate->delimiters_templates( report => 1 ), "\n\n";
                }
 
                if ($stats) {
@@ -588,6 +609,9 @@ if ($parallel) {
        $log->info("all parallel processes finished");
 }
 
+# save new delimiters if needed
+$validate->save_delimiters_templates;
+
 #
 # handle links or merge after indexing
 #