Merge branch 'master' of git+ssh://git.sitka.bclibraries.ca/sitka/sitka-tools
authorMark Bucholtz <mbucholtz@sitka.bclibraries.ca>
Tue, 12 Aug 2014 19:27:18 +0000 (12:27 -0700)
committerMark Bucholtz <mbucholtz@sitka.bclibraries.ca>
Tue, 12 Aug 2014 19:27:18 +0000 (12:27 -0700)
marc_export_custom/marc_export_custom_ms

index ac6adf0..3c49729 100755 (executable)
@@ -26,7 +26,7 @@ use Data::Dumper;
 
 my @formats = qw/USMARC UNIMARC XML BRE ARE/;
 
-my ($config,$format,$encoding,$location,$dollarsign,$idl,$help,$holdings,$timeout,$export_mfhd,$type,$all_records) = ('/openils/conf/opensrf_core.xml','USMARC','MARC8','','$',0,undef,undef,0,undef,'biblio',undef);
+my ($config,$format,$encoding,$location,$dollarsign,$idl,$help,$holdings,$timeout,$export_mfhd,$type,$all_records,$quiet) = ('/openils/conf/opensrf_core.xml','USMARC','MARC8','','$',0,undef,undef,0,undef,'biblio',undef,0);
 my ($exclusion_ini,$collapse_to_depth, $output_file);
 my $cfg;
 my $force901;
@@ -53,7 +53,8 @@ GetOptions(
         'onlyholdings' => \$onlyholdings,
         'output-file=s' => \$output_file,
         'verbose' => \$verbose,
-       'cap=i' => \$cap,
+        'cap=i' => \$cap,
+        'quiet' => \$quiet,
 );
 
 if ($exclusion_ini) {
@@ -275,7 +276,7 @@ sub process_bib {
 
     if ($format eq 'ARE' or $format eq 'BRE') {
         print $outfh OpenSRF::Utils::JSON->perl2JSON($bib);
-        stats();
+        stats() unless $quiet;
         $count{did}++;
         return;
     }
@@ -384,7 +385,7 @@ sub process_bib {
         }
     }
 
-    stats() if (! ($count{bib} % 50 ));
+    stats() if (!$quiet && ! ($count{bib} % 50 ));
 }
 
 sub stats {
@@ -409,7 +410,7 @@ sub stats {
 }
 
 sub get_bib_locations {
-    print STDERR "Retrieving Org Units ... ";
+    print STDERR "Retrieving Org Units ... " unless $quiet;
     my $ses = OpenSRF::AppSession->connect('open-ils.cstore');
     my $r = $ses->request( 'open-ils.cstore.direct.actor.org_unit.search', { id => { '!=' => undef } } );
 
@@ -422,7 +423,7 @@ sub get_bib_locations {
     $r->finish;
     print STDERR "OK\n";
 
-    print STDERR "Retrieving Copy statuses ... ";
+    print STDERR "Retrieving Copy statuses ... " unless $quiet;
     $r = $ses->request( 'open-ils.cstore.direct.config.copy_status.search', { id => { '!=' => undef } } );
 
     while (my $sta = $r->recv) {
@@ -434,7 +435,7 @@ sub get_bib_locations {
     $r->finish;
     print STDERR "OK\n";
 
-    print STDERR "Retrieving OU types ... ";
+    print STDERR "Retrieving OU types ... " unless $quiet;
     $r = $ses->request( 'open-ils.cstore.direct.actor.org_unit_type.search', { id => { '!=' => undef } } );
 
     while (my $outy = $r->recv) {
@@ -446,7 +447,7 @@ sub get_bib_locations {
     $r->finish;
     print STDERR "OK\n";
 
-    print STDERR "Retrieving Shelving locations ... ";
+    print STDERR "Retrieving Shelving locations ... " unless $quiet;
     $r = $ses->request( 'open-ils.cstore.direct.asset.copy_location.search', { id => { '!=' => undef } } );
 
     while (my $s = $r->recv) {
@@ -531,14 +532,14 @@ sub add_bib_holdings {
                             if($localcfg->{$cfgparam}){
                                 # this little line is just forcing scalars into an array so we can 'use strict' with Config::Simple
                                 my @flags = ( (ref($localcfg->{$cfgparam}) eq "ARRAY") ? @{$localcfg->{$cfgparam}} : ($localcfg->{$cfgparam}));
-                                if( grep { $_ eq 'reference' } @flags && $cp->ref eq 't')
+                                if(grep( { $_ eq 'reference' } @flags) && ($cp->ref eq 't'))
                                 { skipnote($bib->id,"Flags: reference"); next COPYMAP; } 
-                                elsif( grep { $_ eq 'unholdable' } @flags && $cp->holdable eq 'f')
+                                if(grep( { $_ eq 'unholdable' } @flags) && ($cp->holdable eq 'f'))
                                 { skipnote($bib->id,"Flags: unholdable"); next COPYMAP; } 
-                                elsif( grep { $_ eq 'circulate' } @flags && $cp->circulate eq 'f')
+                                if(grep( { $_ eq 'circulate' } @flags) && ($cp->circulate eq 'f'))
                                 { skipnote($bib->id,"Flags: circulate"); next COPYMAP; } 
-                                elsif( grep { $_ eq 'hidden' } @flags && $cp->opac_visible eq 'f')
-                                { skipnote($bib->id,"Flags: hidden"); next COPYMAP; } 
+                                if(grep( { $_ eq 'hidden' } @flags) && ($cp->opac_visible eq 'f'))
+                                { skipnote($bib->id,"Flags: hidden"); next COPYMAP; }
                             }
 
                             # Excluded Circ Modifiers
@@ -546,7 +547,7 @@ sub add_bib_holdings {
                             if($localcfg->{$cfgparam}){
                                 my $circmod = $cp->circ_modifier || "";
                                 my @circmods = ( (ref($localcfg->{$cfgparam}) eq "ARRAY") ? @{$localcfg->{$cfgparam}} : ($localcfg->{$cfgparam}) );
-                                if( grep { $_ eq $circmod } @circmods && @circmods)
+                                if(grep( { $_ eq $circmod } @circmods) && @circmods)
                                 { skipnote($bib->id,$cfgparam); next COPYMAP; } 
                             }
                             # Inverse rule -- only include specified Circ Mods
@@ -554,28 +555,28 @@ sub add_bib_holdings {
                             if($localcfg->{$cfgparam}){
                                 my $circmod = $cp->circ_modifier || "";
                                 my @circmods = ( (ref($localcfg->{$cfgparam}) eq "ARRAY") ? @{$localcfg->{$cfgparam}} : ($localcfg->{$cfgparam}) );
-                                unless( grep { $_ and $_ eq $circmod } @circmods && @circmods)
+                                unless(grep( { $_ and $_ eq $circmod } @circmods) && @circmods)
                                 { skipnote($bib->id,$cfgparam); next COPYMAP; } 
                             }
                             # Excluded Copy Statuses
                             $cfgparam = 'Statuses'; 
                             if($localcfg->{$cfgparam}){
                                 my @statuses = ( (ref($localcfg->{$cfgparam}) eq "ARRAY") ? @{$localcfg->{$cfgparam}} : ($localcfg->{$cfgparam}) );
-                                if( grep { $_ eq $statuses{$cp->status}->name } @statuses && @statuses)
+                                if(grep( { $_ eq $statuses{$cp->status}->name } @statuses) && @statuses)
                                 { skipnote($bib->id,$cfgparam); next COPYMAP; } 
                             }
                             # Excluded Locations
                             $cfgparam = 'Locations'; 
                             if($localcfg->{$cfgparam}){
                                 my @locations = ( (ref($localcfg->{$cfgparam}) eq "ARRAY") ? @{$localcfg->{$cfgparam}} : ($localcfg->{$cfgparam}) );
-                                if( grep { $_ eq $shelves{$cp->location}->name } @locations && @locations)
+                                if(grep( { $_ eq $shelves{$cp->location}->name } @locations) && @locations)
                                 { skipnote($bib->id,$cfgparam); next COPYMAP; }
                             }
                             # Inverse rule - Only use the specified locations
                             $cfgparam = 'OnlyIncludeLocations'; 
                             if($localcfg->{$cfgparam}){
                                 my @locations = ( (ref($localcfg->{$cfgparam}) eq "ARRAY") ? @{$localcfg->{$cfgparam}} : ($localcfg->{'Locations'}) );
-                                unless( grep { $_ eq $shelves{$cp->location}->name } @locations && @locations)
+                                unless(grep( { $_ eq $shelves{$cp->location}->name } @locations) && @locations)
                                 { skipnote($bib->id,$cfgparam); next COPYMAP; } 
                             }
                             # exclude based on a regex match to location names
@@ -583,7 +584,7 @@ sub add_bib_holdings {
                             if($localcfg->{$cfgparam}){
                                 my @locregex = ( (ref($localcfg->{$cfgparam}) eq "ARRAY") ? @{$localcfg->{$cfgparam}} : ($localcfg->{$cfgparam}) );
                                 my $reg = $localcfg->{$cfgparam};
-                                if( grep { $shelves{$cp->location}->name =~ m/($reg)/ } @locregex && @locregex)
+                                if(grep( { $shelves{$cp->location}->name =~ m/($reg)/ } @locregex) && @locregex)
                                 { skipnote($bib->id,$cfgparam); next COPYMAP; }
                             }
                             # include based on a regex match to location names
@@ -591,7 +592,7 @@ sub add_bib_holdings {
                             if($localcfg->{$cfgparam}){
                                 my @locregex = ( (ref($localcfg->{$cfgparam}) eq "ARRAY") ? @{$localcfg->{$cfgparam}} : ($localcfg->{$cfgparam}) );
                                 my $reg = $localcfg->{$cfgparam};
-                                unless( grep { $shelves{$cp->location}->name =~ m/($reg)/ } @locregex && @locregex)
+                                unless(grep( { $shelves{$cp->location}->name =~ m/($reg)/ } @locregex) && @locregex)
                                 { skipnote($bib->id,$cfgparam); next COPYMAP; } 
                             }
                             # Exclude based on a callno regex
@@ -599,7 +600,7 @@ sub add_bib_holdings {
                             if($localcfg->{$cfgparam}){
                                 my @callnoregex = ( (ref($localcfg->{$cfgparam}) eq "ARRAY") ? @{$localcfg->{$cfgparam}} : ($localcfg->{$cfgparam}) );
                                 my $reg = $localcfg->{$cfgparam};
-                                if( grep { $cn->label =~ m/($reg)/ } @callnoregex && @callnoregex)
+                                if(grep( { $cn->label =~ m/($reg)/ } @callnoregex) && @callnoregex)
                                 { skipnote($bib->id,$cfgparam); next COPYMAP; }
                             }
                             # Include based on a callno regex
@@ -607,7 +608,7 @@ sub add_bib_holdings {
                             if($localcfg->{$cfgparam}){
                                 my @callnoregex = ( (ref($localcfg->{$cfgparam}) eq "ARRAY") ? @{$localcfg->{$cfgparam}} : ($localcfg->{$cfgparam}) );
                                 my $reg = $localcfg->{$cfgparam};
-                                unless( grep { $cn->label =~ m/($reg)/ } @callnoregex && @callnoregex)
+                                unless(grep( { $cn->label =~ m/($reg)/ } @callnoregex) && @callnoregex)
                                 { skipnote($bib->id,$cfgparam); next COPYMAP; } 
                             }
 
@@ -674,7 +675,7 @@ sub add_bib_holdings {
 
 
 
-                    stats() if (! ($count{cp} % 100 ));
+                    stats() if (!$quiet && ! ($count{cp} % 100 ));
                 } # COPYMAP: for my $cp ( @$cn_map_list )
             } # for my $cn ( @$cn_list )
         } # if ($cp_list && @$cp_list)
@@ -686,5 +687,5 @@ sub skipnote {
         my $note = shift;
         my $outf = *STDERR;
         $outf = *STDOUT if($output_file) ;
-        printf($outf "Skipped %s due to config: %s\n",$id,$note); 
+        printf($outf "Skipped %s due to config: %s\n",$id,$note) unless $quiet
 }