From 94e3a3aabce7c1264be7451ef41244c271b18e55 Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Mon, 18 Mar 2013 14:02:41 -0400
Subject: [PATCH] Added -z and -h switches to
 batch-import-marc/batch-import-marc-auth.

---
 harvest/batch-import-marc-auth.bat | 22 ++++++++--
 harvest/batch-import-marc-auth.sh  | 68 +++++++++++++++++++++---------
 harvest/batch-import-marc.bat      | 20 ++++++++-
 harvest/batch-import-marc.sh       | 68 +++++++++++++++++++++---------
 4 files changed, 135 insertions(+), 43 deletions(-)

diff --git a/harvest/batch-import-marc-auth.bat b/harvest/batch-import-marc-auth.bat
index 1297a145848..6686185d6b7 100644
--- a/harvest/batch-import-marc-auth.bat
+++ b/harvest/batch-import-marc-auth.bat
@@ -32,6 +32,7 @@ set HARVEST_DIR=%VUFIND_HOME%\harvest
 :harvestpathfound
 
 set BASEPATH_UNDER_HARVEST=1
+set LOGGING=1
 set MOVE_DATA=1
 
 rem Save script name for message below (otherwise it may get shifted away)
@@ -40,7 +41,9 @@ set SCRIPT_NAME=%0
 rem Process switches
 :switchloop
 if "%1"=="-d" goto dswitch
+if "%1"=="-h" goto helpmessage
 if "%1"=="-m" goto mswitch
+if "%1"=="-z" goto zswitch
 goto switchloopend
 :dswitch
 set BASEPATH_UNDER_HARVEST=0
@@ -50,13 +53,18 @@ goto switchloop
 set MOVE_DATA=0
 shift
 goto switchloop
+:zswitch
+set LOGGING=0
+shift
+goto switchloop
 :switchloopend
 
 rem Make sure command line parameter was included:
 if not "!%2!"=="!!" goto paramsokay
+:helpmessage
 echo This script processes a batch of harvested authority records.
 echo.
-echo Usage: %0 [harvest subdirectory] [SolrMarc properties file]
+echo Usage: %0 [-dhmz] [harvest subdirectory] [SolrMarc properties file]
 echo.
 echo [harvest subdirectory] is a directory name created by the OAI-PMH harvester.
 echo This script will search the harvest subdirectories of the directories defined
@@ -67,7 +75,9 @@ echo.
 echo Options:
 echo -d:  Use the directory path as-is, do not append it to %HARVEST_DIR%.
 echo      Useful for non-OAI batch loading.
+echo -h:  Print this message
 echo -m:  Do not move the data files after importing.
+echo -z:  No logging.
 goto end
 :paramsokay
 
@@ -83,6 +93,7 @@ goto end
 
 rem Create log/processed directories as needed:
 if exist %BASEPATH%\log goto logfound
+if "%LOGGING%"=="0" goto logfound
 md %BASEPATH%\log
 :logfound
 if exist %BASEPATH%\processed goto processedfound
@@ -92,9 +103,14 @@ md %BASEPATH%\processed
 rem Process all the files in the target directory:
 for %%a in (%BASEPATH%\*.xml %BASEPATH%\*.mrc) do (
   rem Capture solrmarc output to log
-  call %VUFIND_HOME%\import-marc-auth.bat %%a %2 2> %BASEPATH%\log\%%~nxa.log
+  if "%LOGGING%"=="0" (
+    call %VUFIND_HOME%\import-marc-auth.bat %%a %2
+  )
+  if "%LOGGING%"=="1" (
+    call %VUFIND_HOME%\import-marc-auth.bat %%a %2 2> %BASEPATH%\log\%%~nxa.log
+  )
   if "%MOVE_DATA%"=="1" (
-  move %%a %BASEPATH%\processed\ > nul
+    move %%a %BASEPATH%\processed\ > nul
   )
 )
 
diff --git a/harvest/batch-import-marc-auth.sh b/harvest/batch-import-marc-auth.sh
index 3fa503803ff..ab2d392b862 100755
--- a/harvest/batch-import-marc-auth.sh
+++ b/harvest/batch-import-marc-auth.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # Make sure VUFIND_HOME is set:
 if [ -z "$VUFIND_HOME" ]
@@ -15,13 +15,38 @@ then
 fi
 
 BASEPATH_UNDER_HARVEST=true
+LOGGING=true
 MOVE_DATA=true
 
-while getopts ":dm" OPT
+function usage {
+cat <<EOF
+This script processes a batch of harvested authority records.
+
+Usage: $(basename $0) [-dhmz] _harvest_subdirectory_ _SolrMarc_properties_file_
+
+_harvest_subdirectory_ is a directory name created by the OAI-PMH harvester.
+This script will search the harvest subdirectories of the directories defined
+by the VUFIND_LOCAL_DIR or VUFIND_HOME environment variables.
+
+Example: $(basename $0) lcnaf marc_lcnaf.properties
+
+Options:
+-d:  Use the directory path as-is, do not append it to $HARVEST_DIR.
+     Useful for non-OAI batch loading.
+-h:  Print this message
+-m:  Do not move the data files after importing.
+-z:  No logging.
+EOF
+}
+
+while getopts ":dhmz" OPT
 do
   case $OPT in
     d) BASEPATH_UNDER_HARVEST=false;;
+    h) usage; 
+       exit 0;;
     m) MOVE_DATA=false;;
+    z) LOGGING=false;;
     :)
       echo "argument to '-$OPTARG' is missing" >&2
       exit -1;;
@@ -34,20 +59,7 @@ shift $(($OPTIND - 1))
 # Make sure command line parameter was included:
 if [ -z "$2" ]
 then
-  echo "This script processes a batch of harvested authority records."
-  echo ""
-  echo "Usage: `basename $0` [-d] [-m] [harvest subdirectory] [SolrMarc properties file]"
-  echo ""
-  echo "[harvest subdirectory] is a directory name created by the OAI-PMH harvester."
-  echo "This script will search the harvest subdirectories of the directories defined"
-  echo "by the VUFIND_LOCAL_DIR and VUFIND_HOME environment variables."
-  echo ""
-  echo "Example: `basename $0` lcnaf marc_lcnaf.properties"
-  echo ""
-  echo "Options:"
-  echo "-d:  Use the directory path as-is, do not append it to $HARVEST_DIR."
-  echo "     Useful for non-OAI batch loading."
-  echo "-m:  Do not move the data files after importing."
+  usage
   exit 1
 fi
 
@@ -65,22 +77,40 @@ then
 fi
 
 # Create log/processed directories as needed:
-if [ ! -d $BASEPATH/log ]
+if [ $LOGGING == true ]
 then
-  mkdir $BASEPATH/log
+  if [ ! -d $BASEPATH/log ]
+  then
+    mkdir $BASEPATH/log
+  fi
 fi
 if [ ! -d $BASEPATH/processed ]
 then
   mkdir $BASEPATH/processed
 fi
 
+# The log() function can be redefined to suit a variety of logging needs
+# Positional parameters must be consistent:
+# $1 = name of the file being imported
+if [ $LOGGING == false ]
+then
+  function log {
+    cat - > /dev/null
+  }
+else
+  function log {
+    local FILE=$1
+    cat -u - > $BASEPATH/log/`basename $FILE`.log
+  }
+fi
+
 # Process all the files in the target directory:
 for file in $BASEPATH/*.xml $BASEPATH/*.mrc
 do
   if [ -f $file ]
   then
     # Capture solrmarc output to log
-    $VUFIND_HOME/import-marc-auth.sh $file $2 2> $BASEPATH/log/`basename $file`.log
+    $VUFIND_HOME/import-marc-auth.sh $file $2 2> >(log $file)
     if [ $MOVE_DATA == true ]
     then
       mv $file $BASEPATH/processed/`basename $file`
diff --git a/harvest/batch-import-marc.bat b/harvest/batch-import-marc.bat
index 5603346d13f..957eab5cbfe 100644
--- a/harvest/batch-import-marc.bat
+++ b/harvest/batch-import-marc.bat
@@ -32,6 +32,7 @@ set HARVEST_DIR=%VUFIND_HOME%\harvest
 :harvestpathfound
 
 set BASEPATH_UNDER_HARVEST=1
+set LOGGING=1
 set MOVE_DATA=1
 
 rem Save script name for message below (otherwise it may get shifted away)
@@ -40,7 +41,9 @@ set SCRIPT_NAME=%0
 rem Process switches
 :switchloop
 if "%1"=="-d" goto dswitch
+if "%1"=="-h" goto helpmessage
 if "%1"=="-m" goto mswitch
+if "%1"=="-z" goto zswitch
 goto switchloopend
 :dswitch
 set BASEPATH_UNDER_HARVEST=0
@@ -50,13 +53,18 @@ goto switchloop
 set MOVE_DATA=0
 shift
 goto switchloop
+:zswitch
+set LOGGING=0
+shift
+goto switchloop
 :switchloopend
 
 rem Make sure command line parameter was included:
 if not "!%1!"=="!!" goto paramsokay
+:helpmessage
 echo This script processes a batch of harvested MARC records.
 echo.
-echo Usage: %SCRIPT_NAME% [-d] [-m] [harvest subdirectory]
+echo Usage: %SCRIPT_NAME% [-dhmz] [harvest subdirectory]
 echo.
 echo [harvest subdirectory] is a directory name created by the OAI-PMH harvester.
 echo This script will search the harvest subdirectories of the directories defined
@@ -67,7 +75,9 @@ echo.
 echo Options:
 echo -d:  Use the directory path as-is, do not append it to %HARVEST_DIR%.
 echo      Useful for non-OAI batch loading.
+echo -h:  Print this message
 echo -m:  Do not move the data files after importing.
+echo -z:  No logging.
 goto end
 :paramsokay
 
@@ -83,6 +93,7 @@ goto end
 
 rem Create log/processed directories as needed:
 if exist %BASEPATH%\log goto logfound
+if "%LOGGING%"=="0" goto logfound
 md %BASEPATH%\log
 :logfound
 if exist %BASEPATH%\processed goto processedfound
@@ -92,7 +103,12 @@ md %BASEPATH%\processed
 rem Process all the files in the target directory:
 for %%a in (%BASEPATH%\*.xml %BASEPATH%\*.mrc) do (
   rem Capture solrmarc output to log
-  call %VUFIND_HOME%\import-marc.bat %%a 2> %BASEPATH%\log\%%~nxa.log
+  if "%LOGGING%"=="0" (
+    call %VUFIND_HOME%\import-marc.bat %%a
+  )
+  if "%LOGGING%"=="1" (
+    call %VUFIND_HOME%\import-marc.bat %%a 2> %BASEPATH%\log\%%~nxa.log
+  )
   if "%MOVE_DATA%"=="1" (
     move %%a %BASEPATH%\processed\ > nul
   )
diff --git a/harvest/batch-import-marc.sh b/harvest/batch-import-marc.sh
index 17002f3bf90..ceb53df46ba 100755
--- a/harvest/batch-import-marc.sh
+++ b/harvest/batch-import-marc.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # Make sure VUFIND_HOME is set:
 if [ -z "$VUFIND_HOME" ]
@@ -15,13 +15,38 @@ then
 fi
 
 BASEPATH_UNDER_HARVEST=true
+LOGGING=true
 MOVE_DATA=true
 
-while getopts ":dm" OPT
+function usage {
+cat <<EOF
+This script processes a batch of harvested MARC records.
+
+Usage: $(basename $0) [-dhmz] _harvest_subdirectory_
+
+_harvest_subdirectory_ is a directory name created by the OAI-PMH harvester.
+This script will search the harvest subdirectories of the directories defined
+by the VUFIND_LOCAL_DIR or VUFIND_HOME environment variables.
+
+Example: $(basename $0) oai_source
+
+Options:
+-d:  Use the directory path as-is, do not append it to $HARVEST_DIR.
+     Useful for non-OAI batch loading.
+-h:  Print this message
+-m:  Do not move the data files after importing.
+-z:  No logging.
+EOF
+}
+
+while getopts ":dhmz" OPT
 do
   case $OPT in
     d) BASEPATH_UNDER_HARVEST=false;;
+    h) usage; 
+       exit 0;;
     m) MOVE_DATA=false;;
+    z) LOGGING=false;;
     :)
       echo "argument to '-$OPTARG' is missing" >&2
       exit -1;;
@@ -34,20 +59,7 @@ shift $(($OPTIND - 1))
 # Make sure command line parameter was included:
 if [ -z "$1" ]
 then
-  echo "This script processes a batch of harvested MARC records."
-  echo ""
-  echo "Usage: `basename $0` [-d] [-m] [harvest subdirectory]"
-  echo ""
-  echo "[harvest subdirectory] is a directory name created by the OAI-PMH harvester."
-  echo "This script will search the harvest subdirectories of the directories defined"
-  echo "by the VUFIND_LOCAL_DIR and VUFIND_HOME environment variables."
-  echo ""
-  echo "Example: `basename $0` oai_source"
-  echo ""
-  echo "Options:"
-  echo "-d:  Use the directory path as-is, do not append it to $HARVEST_DIR."
-  echo "     Useful for non-OAI batch loading."
-  echo "-m:  Do not move the data files after importing."
+  usage
   exit 1
 fi
 
@@ -65,22 +77,40 @@ then
 fi
 
 # Create log/processed directories as needed:
-if [ ! -d $BASEPATH/log ]
+if [ $LOGGING == true ]
 then
-  mkdir $BASEPATH/log
+  if [ ! -d $BASEPATH/log ]
+  then
+    mkdir $BASEPATH/log
+  fi
 fi
 if [ ! -d $BASEPATH/processed ]
 then
   mkdir $BASEPATH/processed
 fi
 
+# The log() function can be redefined to suit a variety of logging needs
+# Positional parameters must be consistent:
+# $1 = name of the file being imported
+if [ $LOGGING == false ]
+then
+  function log {
+    cat - > /dev/null
+  }
+else
+  function log {
+    local FILE=$1
+    cat -u - > $BASEPATH/log/`basename $FILE`.log
+  }
+fi
+
 # Process all the files in the target directory:
 for file in $BASEPATH/*.xml $BASEPATH/*.mrc
 do
   if [ -f $file ]
   then
     # Capture solrmarc output to log
-    $VUFIND_HOME/import-marc.sh $file 2> $BASEPATH/log/`basename $file`.log
+    $VUFIND_HOME/import-marc.sh $file 2> >(log $file)
     if [ $MOVE_DATA == true ]
     then
       mv $file $BASEPATH/processed/`basename $file`
-- 
GitLab