From e53def7f8490e31800f6f11cae46daa971c16423 Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Thu, 26 Jul 2018 09:47:39 -0400
Subject: [PATCH] Improve Windows batch file path/environment handling.

---
 import-marc.bat             | 18 +++++++++++-------
 index-alphabetic-browse.bat | 19 +++++++++++--------
 solr.bat                    | 13 ++++++++-----
 3 files changed, 30 insertions(+), 20 deletions(-)

diff --git a/import-marc.bat b/import-marc.bat
index 5b2257f1686..c4322107e00 100644
--- a/import-marc.bat
+++ b/import-marc.bat
@@ -60,17 +60,20 @@ set EXTRA_SOLRMARC_SETTINGS=%EXTRA_SOLRMARC_SETTINGS%  -Dsolr.core.name=%SOLRCOR
 rem ##################################################
 rem # Set VUFIND_HOME
 rem ##################################################
-if not "!%VUFIND_HOME%!"=="!!" goto vufindhomefound
+if not (!%VUFIND_HOME%!)==(!!) goto vufindhomefound
 rem VUFIND_HOME not set -- try to call env.bat to 
 rem fix the problem before we give up completely
 if exist env.bat goto useenvbat
 rem If env.bat doesn't exist, the user hasn't run the installer yet.
-echo ERROR: env.bat does not exist -- could not set up environment.
+echo WARNING: env.bat does not exist -- trying default environment settings.
 echo Please run "php install.php" to correct this problem.
-goto end
+rem Extract path from current batch file and trim trailing slash:
+set VUFIND_HOME=%~dp0%
+set VUFIND_HOME=%VUFIND_HOME:~0,-1%
+goto vufindhomefound
 :useenvbat
 call env > nul
-if not "!%VUFIND_HOME%!"=="!!" goto vufindhomefound
+if not (!%VUFIND_HOME%!)==(!!) goto vufindhomefound
 echo You need to set the VUFIND_HOME environmental variable before running this script.
 goto end
 :vufindhomefound
@@ -78,11 +81,11 @@ goto end
 rem #####################################################
 rem # Build java command
 rem #####################################################
-if not "!%JAVA_HOME%!"=="!!" goto javahomefound
+if not (!%JAVA_HOME%!)==(!!) goto javahomefound
 set JAVA=java
 goto javaset
 :javahomefound
-set JAVA="%JAVA_HOME%\bin\java"
+set JAVA=%JAVA_HOME%\bin\java
 :javaset
 
 rem ##################################################
@@ -93,6 +96,7 @@ if not exist %VUFIND_LOCAL_DIR%\import\import.properties goto nolocalproperties
 set PROPERTIES_FILE=%VUFIND_LOCAL_DIR%\import\import.properties
 goto propertiesfound
 :nolocalproperties
+echo WARNING: VUFIND_LOCAL_DIR environment variable is not set. Is this intentional?
 set PROPERTIES_FILE=%VUFIND_HOME%\import\import.properties
 :propertiesfound
 
@@ -112,4 +116,4 @@ echo %RUN_CMD%
 :end
 
 rem We're all done -- close down the local environment.
-endlocal
\ No newline at end of file
+endlocal
diff --git a/index-alphabetic-browse.bat b/index-alphabetic-browse.bat
index 315f0406982..ceccbb467fa 100644
--- a/index-alphabetic-browse.bat
+++ b/index-alphabetic-browse.bat
@@ -12,32 +12,35 @@ goto end
 rem ##################################################
 rem # Set SOLR_HOME
 rem ##################################################
-if not "!%VUFIND_HOME%!"=="!!" goto vufindhomefound
+if not (!%VUFIND_HOME%!)==(!!) goto vufindhomefound
 rem VUFIND_HOME not set -- try to call env.bat to 
 rem fix the problem before we give up completely
 if exist env.bat goto useenvbat
 rem If env.bat doesn't exist, the user hasn't run the installer yet.
-echo ERROR: env.bat does not exist -- could not set up environment.
-echo Please run install.php to correct this problem.
-goto end
+echo WARNING: env.bat does not exist -- trying default environment settings.
+echo Please run "php install.php" to correct this problem.
+rem Extract path from current batch file and trim trailing slash:
+set VUFIND_HOME=%~dp0%
+set VUFIND_HOME=%VUFIND_HOME:~0,-1%
+goto vufindhomefound
 :useenvbat
 call env > nul
-if not "!%VUFIND_HOME%!"=="!!" goto vufindhomefound
+if not (!%VUFIND_HOME%!)==(!!) goto vufindhomefound
 echo You need to set the VUFIND_HOME environmental variable before running this script.
 goto end
 :vufindhomefound
-if not "!%SOLR_HOME%!"=="!!" goto solrhomefound
+if not (!%SOLR_HOME%!)==(!!) goto solrhomefound
 set SOLR_HOME=%VUFIND_HOME%\solr\vufind
 :solrhomefound
 
 rem #####################################################
 rem # Build java command
 rem #####################################################
-if not "!%JAVA_HOME%!"=="!!" goto javahomefound
+if not (!%JAVA_HOME%!)==(!!) goto javahomefound
 set JAVA=java
 goto javaset
 :javahomefound
-set JAVA="%JAVA_HOME%\bin\java"
+set JAVA=%JAVA_HOME%\bin\java
 :javaset
 
 cd %VUFIND_HOME%\import
diff --git a/solr.bat b/solr.bat
index eb6c9b4a403..fbce82ff4b6 100644
--- a/solr.bat
+++ b/solr.bat
@@ -40,17 +40,20 @@ rem Unrecognized action -- display help text
 if "!%1!"=="!!" goto usage
 
 rem Set VUFIND_HOME (if not already set)
-if not "!%VUFIND_HOME%!"=="!!" goto vufindhomefound
-rem VUFIND_HOME not set -- try to call env.bat to
+if not (!%VUFIND_HOME%!)==(!!) goto vufindhomefound
+rem VUFIND_HOME not set -- try to call env.bat to 
 rem fix the problem before we give up completely
 if exist env.bat goto useenvbat
 rem If env.bat doesn't exist, the user hasn't run the installer yet.
-echo ERROR: env.bat does not exist -- could not set up environment.
+echo WARNING: env.bat does not exist -- trying default environment settings.
 echo Please run "php install.php" to correct this problem.
-goto end
+rem Extract path from current batch file and trim trailing slash:
+set VUFIND_HOME=%~dp0%
+set VUFIND_HOME=%VUFIND_HOME:~0,-1%
+goto vufindhomefound
 :useenvbat
 call env > nul
-if not "!%VUFIND_HOME%!"=="!!" goto vufindhomefound
+if not (!%VUFIND_HOME%!)==(!!) goto vufindhomefound
 echo You need to set the VUFIND_HOME environmental variable before running this script.
 goto end
 :vufindhomefound
-- 
GitLab