Make autogen.sh a bit more robust and informative
authordbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 31 May 2009 15:04:41 +0000 (15:04 +0000)
committerdbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 31 May 2009 15:04:41 +0000 (15:04 +0000)
  * Default to sysconfdir as configured at build time
  * Return an error message and value if the specified config file is not found
  * Support legacy option of using $1 as the config file value, without breaking "autogen.sh -u"

git-svn-id: svn://svn.open-ils.org/ILS/trunk@13269 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/Makefile.am
Open-ILS/src/extras/autogen.sh

index 4d53679..a879f7d 100644 (file)
@@ -222,8 +222,9 @@ ilscore-install:
        sed -i 's|LOCALSTATEDIR|@localstatedir@|g' '$(DESTDIR)@sysconfdir@/opensrf.xml.example'
        sed -i 's|SYSCONFDIR|@sysconfdir@|g' '$(DESTDIR)@sysconfdir@/opensrf.xml.example'
        sed -i 's|LIBDIR|@libdir@|g' '$(DESTDIR)@sysconfdir@/opensrf.xml.example'
-       sed -i 's|SYSCONFDIR|@sysconfdir@|g' '$(DESTDIR)@bindir@/autogen.sh'
+       sed -i 's|BINDIR|@bindir@|g' '$(DESTDIR)@bindir@/autogen.sh'
        sed -i 's|LOCALSTATEDIR|@localstatedir@|g' '$(DESTDIR)@bindir@/autogen.sh'
+       sed -i 's|SYSCONFDIR|@sysconfdir@|g' '$(DESTDIR)@bindir@/autogen.sh'
        sed -i 's|BINDIR|@bindir@|g' '$(DESTDIR)@bindir@/reshelving_complete.srfsh'
        sed -i 's|BINDIR|@bindir@|g' '$(DESTDIR)@bindir@/juv_to_adult.srfsh'
        sed -i 's|BINDIR|@bindir@|g' '$(DESTDIR)@bindir@/long-overdue-status-update.pl'
index fd0e0b3..9e0728b 100755 (executable)
 
 # vim:noet:ts=4
 
+# Exit script if any statement returns a non-true return value
+set -e
+# Throw an error for uninitialized variables
+set -u
+
 # ---------------------------------------------------------------------------
 # Make sure we're running as the correct user
 # ---------------------------------------------------------------------------
 
 function usage {
        echo "";
-       echo "usage: $0 [-u] -c <c_config>";
+       echo "usage: $0 [-u] [-c <c_config>]";
        echo "";
-       echo "Mandatory parameters:";
-       echo -e "  -c\t\tfull path to C configuration file (opensrf_core.xml)";
+       echo "Updates the Evergreen organization tree and fieldmapper IDL.";
+       echo "Run this every time you change the Evergreen organization tree";
+       echo "or update fm_IDL.xml";
        echo "";
        echo "Optional parameters:";
+       echo -e "  -c\t\tfull path to C configuration file (opensrf_core.xml)";
+       echo -e "    \t\t - defaults to SYSCONFDIR/opensrf_core.xml";
        echo -e "  -u\t\tupdate proximity of library sites in organization tree";
        echo -e "    \t\t(this is expensive for a large organization tree)";
        echo "";
        echo "Examples:";
        echo "";
-       echo "  Update organization tree:";
+       echo "  Update organization tree and fieldmapper IDL:";
        echo "    $0 -c SYSCONFDIR/opensrf_core.xml";
-       echo "    $0 SYSCONFDIR/opensrf_core.xml";
        echo "";
        echo "  Update organization tree and refresh proximity:";
        echo "    $0 -u -c SYSCONFDIR/opensrf_core.xml";
        echo "";
-       exit;
 }
 
 (
 
-BASEDIR=${0%/*}
-if test "$BASEDIR" = "$0" ; then
-       BASEDIR="$(which $0)"
-       BASEDIR=${BASEDIR%/*}
-fi
-
-cd "$BASEDIR"
+cd "BINDIR"
 
-CONFIG="$1";
+# Initialize our variables
+CONFIG="";
+PROXIMITY="";
 
 # ---------------------------------------------------------------------------
 # Load the command line options and set the global vars
@@ -63,16 +65,33 @@ while getopts  "c:u h" flag; do
        case $flag in   
                "c")            CONFIG="$OPTARG";;
                "u")            PROXIMITY="REFRESH";;
-               "h")            usage;;
+               "h")            usage && exit;;
        esac;
+       shift $((OPTIND - 1))
 done
 
-[ -z "$CONFIG" ] && usage;
+if [ -z "$CONFIG" ] && [[ ! -z "${1:-}" ]]; then
+       # Support "autogen.sh /path/to/opensrf_core.xml" for legacy invocation
+       CONFIG="$1";
+fi
+if [ -z "$CONFIG" ]; then
+       # Fall back to the configured default
+       CONFIG="SYSCONFDIR/opensrf_core.xml";
+fi
+if [ ! -f "$CONFIG" ]; then
+       echo "ERROR: could not find configuration file '$CONFIG'";
+       echo "";
+       usage;
+       exit 1;
+fi;
 
 JSDIR="LOCALSTATEDIR/web/opac/common/js/";
 FMDOJODIR="LOCALSTATEDIR/web/js/dojo/fieldmapper/";
 SLIMPACDIR="LOCALSTATEDIR/web/opac/extras/slimpac/";
 
+echo "Updating Evergreen organization tree and IDL using '$CONFIG'"
+echo ""
+
 echo "Updating fieldmapper";
 perl fieldmapper.pl "$CONFIG"  > "$JSDIR/fmall.js";
 cp "$JSDIR/fmall.js" "$FMDOJODIR/"
@@ -94,7 +113,7 @@ echo "Updating Search Groups";
 perl org_lasso_js.pl "$CONFIG" > "$JSDIR/OrgLasso.js";
 cp "$JSDIR/OrgLasso.js" "$FMDOJODIR/"
 
-if [ "$PROXIMITY" ]
+if [ ! -z "$PROXIMITY" ]
 then
        echo "Refreshing proximity of org units";
        perl org_tree_proximity.pl "$CONFIG";