bug fix
[webpac2] / run.pl
diff --git a/run.pl b/run.pl
index d6265c2..7cc1e6a 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;
@@ -68,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
@@ -103,6 +113,8 @@ 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;
@@ -122,6 +134,8 @@ 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,
@@ -156,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;
@@ -431,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,
@@ -537,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++;
@@ -553,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) {
@@ -593,6 +609,9 @@ if ($parallel) {
        $log->info("all parallel processes finished");
 }
 
+# save new delimiters if needed
+$validate->save_delimiters_templates if ( $validate );
+
 #
 # handle links or merge after indexing
 #