#!/bin/bash set -e set -o pipefail INFRA_REFERENCE={{ dataminer_infra_reference }} ADD_ALGORITHM_DIR={{ smartgears_user_home }}/algorithmInstaller ADD_ALGORITHM_PATH={{ smartgears_user_home }}/algorithmInstaller/addAlgorithm.sh ALGORITHMS_FILE={{ smartgears_user_home }}/wps_algorithms/algorithms/${INFRA_REFERENCE}/algorithms OUT_DIR=$( mktemp -d -t algorithms-updater.XXXXXXXXXX ) ALGORITHMS_TEMP_SCRIPT=$OUT_DIR/add_algorithms LOG_DIR={{ smartgears_user_home }}/wps_algorithms_install_log/ LOG_FILE=${LOG_DIR}/algorithms_updater.log LOCK_FILE=${LOG_DIR}/.algorithms_updater.lock ALGO_DIR={{ smartgears_user_home }}/wps_algorithms/algorithms RUNNING_JOB= RUNNING_JOB_RETVAL= trap "logger 'algorithms-updater: trap intercepted, exiting.' ; cleanup 1" SIGHUP SIGINT SIGTERM function cleanup() { rm -fr $OUT_DIR rm -f $LOCK_FILE exit $1 } function create_log_dir() { if [ ! -d $LOG_DIR ] ; then mkdir -p $LOG_DIR fi } function check_lock_file() { # Create the lock file if [ -f $LOCK_FILE ] ; then set +o pipefail set +e RUNNING_JOB=$( ps auwwx | grep `cat /tmp/io` | grep -v grep ) RUNNING_JOB_RETVAL=$? if [ $RUNNING_JOB_RETVAL -eq 0 ] ; then logger 'algorithms-updater: another job still running, exiting.' rm -fr $OUT_DIR exit 0 else rm -f $LOCK_FILE fi else logger 'algorithms-updater: no other jobs running, proceeding.' fi set -o pipefail set -e echo "$$" > $LOCK_FILE } function update_svn_repo() { logger 'algorithms-updater: update the SVN repo' cd $ALGO_DIR svn update > $LOG_FILE 2>&1 } function algorithms_updater() { logger 'algorithms-updater: scan the algorithms list and build the algorithms script. Reference infra is {{ dataminer_infra_reference }}' echo "#!/bin/bash" > $ALGORITHMS_TEMP_SCRIPT echo "cd $ADD_ALGORITHM_DIR" >> $ALGORITHMS_TEMP_SCRIPT echo "" >> $ALGORITHMS_TEMP_SCRIPT cat $ALGORITHMS_FILE | awk -F \| '{ print $6 }' >> $ALGORITHMS_TEMP_SCRIPT sed -i -e 's///g' $ALGORITHMS_TEMP_SCRIPT sed -i -e 's/<\/notextile>//g' $ALGORITHMS_TEMP_SCRIPT chmod 755 $ALGORITHMS_TEMP_SCRIPT if [ -x $ADD_ALGORITHM_PATH ] ; then logger 'algorithms-updater: add the algorithms configurations. Reference infra is {{ dataminer_infra_reference }}' $ALGORITHMS_TEMP_SCRIPT >> $LOG_FILE 2>&1 else logger 'algorithms-updater: {{ smartgears_user_home }}/algorithmInstaller/addAlgorithm.sh is not an executable, aborting' cleanup 1 fi } # # Main # create_log_dir check_lock_file update_svn_repo algorithms_updater cleanup 0