From 09e901916ee6b7ad3a7d0c920efa416051e11cca Mon Sep 17 00:00:00 2001 From: dbs Date: Sun, 31 May 2009 15:04:41 +0000 Subject: [PATCH] Make autogen.sh a bit more robust and informative * 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 | 3 +- Open-ILS/src/extras/autogen.sh | 53 +++++++++++++++++++++++----------- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/Open-ILS/src/Makefile.am b/Open-ILS/src/Makefile.am index 4d53679846..a879f7d83c 100644 --- a/Open-ILS/src/Makefile.am +++ b/Open-ILS/src/Makefile.am @@ -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' diff --git a/Open-ILS/src/extras/autogen.sh b/Open-ILS/src/extras/autogen.sh index fd0e0b309b..9e0728b150 100755 --- a/Open-ILS/src/extras/autogen.sh +++ b/Open-ILS/src/extras/autogen.sh @@ -16,6 +16,11 @@ # 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 # --------------------------------------------------------------------------- @@ -23,38 +28,35 @@ function usage { echo ""; - echo "usage: $0 [-u] -c "; + echo "usage: $0 [-u] [-c ]"; 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"; -- 2.43.2