extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/grid/scripts/reggie-utils.sh

Code
Comments
Other
Rev Date Author Line
6628 07 Mar 22 nicklas 1 # $Id $
6628 07 Mar 22 nicklas 2 #
6628 07 Mar 22 nicklas 3 # Useful utility functions that can be used by other scipts.
6628 07 Mar 22 nicklas 4 # Include this file in other scripts with:
6628 07 Mar 22 nicklas 5
6628 07 Mar 22 nicklas 6 # source ./reggie-utils.sh
6628 07 Mar 22 nicklas 7 #
6628 07 Mar 22 nicklas 8
6669 06 Apr 22 nicklas 9 # Enable output of script to stderr if debugging
6669 06 Apr 22 nicklas 10 if [ "${JOB_DEBUG}" ]; then
6669 06 Apr 22 nicklas 11   set -x;
6669 06 Apr 22 nicklas 12 fi
6669 06 Apr 22 nicklas 13
6653 23 Mar 22 nicklas 14 # Use 1 thread/core but not more than slots assigned by the queue system
6653 23 Mar 22 nicklas 15 export NumThreads=`nproc`
6653 23 Mar 22 nicklas 16 if [ "${NSLOTS}" ]; then
6653 23 Mar 22 nicklas 17   NumThreads=$(( ${NSLOTS} < ${NumThreads} ? ${NSLOTS} : ${NumThreads} ))
6653 23 Mar 22 nicklas 18 fi
6653 23 Mar 22 nicklas 19
6653 23 Mar 22 nicklas 20
6628 07 Mar 22 nicklas 21 # Report progress to the $WD/progress file
6628 07 Mar 22 nicklas 22 # Two parameters are required:
6628 07 Mar 22 nicklas 23 #  $1: The progress in percent
6628 07 Mar 22 nicklas 24 #  $2: A message to display in the progress bar 
6630 07 Mar 22 nicklas 25 rg_progress()
6628 07 Mar 22 nicklas 26 {
6628 07 Mar 22 nicklas 27   local percent=$1
6628 07 Mar 22 nicklas 28   local msg=$2
6628 07 Mar 22 nicklas 29   echo "${percent} ${msg}" > ${WD}/progress
6628 07 Mar 22 nicklas 30 }
6628 07 Mar 22 nicklas 31
7106 12 Apr 23 nicklas 32 # Report current time and message to the $WD/time.log fil
7106 12 Apr 23 nicklas 33 # One parameter is required
7106 12 Apr 23 nicklas 34 #  $1: A message to add to the log file
7106 12 Apr 23 nicklas 35 rg_time()
7106 12 Apr 23 nicklas 36 {
7106 12 Apr 23 nicklas 37   local msg=$1
7106 12 Apr 23 nicklas 38   echo "`date +%H:%M:%S` ${msg}" >> ${WD}/time.log
7106 12 Apr 23 nicklas 39 }
7106 12 Apr 23 nicklas 40
6628 07 Mar 22 nicklas 41 # Exit the script. An exit code is required and an optional
6628 07 Mar 22 nicklas 42 # message is printed to stderr
6628 07 Mar 22 nicklas 43 #  $1: The exit code
6628 07 Mar 22 nicklas 44 #  $2: A message that is echo-ed to stderr (optional)
6630 07 Mar 22 nicklas 45 rg_exit()
6628 07 Mar 22 nicklas 46 {
6628 07 Mar 22 nicklas 47   local exitCode=$1
6628 07 Mar 22 nicklas 48   local msg=$2
6628 07 Mar 22 nicklas 49   if [ "$msg" ]; then
6628 07 Mar 22 nicklas 50     echo "${msg}" 1>&2
6628 07 Mar 22 nicklas 51   fi
6628 07 Mar 22 nicklas 52   exit ${exitCode}
6628 07 Mar 22 nicklas 53 }
6628 07 Mar 22 nicklas 54
6653 23 Mar 22 nicklas 55 # Check if one or more variables have been set or not. Exit with an error message if not.
6653 23 Mar 22 nicklas 56 # Note that parameters should be name of the environment variables to test,
6653 23 Mar 22 nicklas 57 # NOT the values of the variables.
6653 23 Mar 22 nicklas 58 rg_var_isset()
6653 23 Mar 22 nicklas 59 {
6653 23 Mar 22 nicklas 60   for var in $@ ; do
6653 23 Mar 22 nicklas 61     if [ ! "${!var}" ]; then
6653 23 Mar 22 nicklas 62       rg_exit 1 "Variable '${var}' has no value"
6695 25 Apr 22 nicklas 63     elif [ "${JOB_DEBUG}" ]; then 
6653 23 Mar 22 nicklas 64       echo "Variable '${var}-->${!var}' is set"
6653 23 Mar 22 nicklas 65     fi
6653 23 Mar 22 nicklas 66   done
6653 23 Mar 22 nicklas 67 }
6653 23 Mar 22 nicklas 68
6653 23 Mar 22 nicklas 69 # Check if one or more variables have been set to a value that points to an
6653 23 Mar 22 nicklas 70 # existing directory. Exit with an error message if not.
6653 23 Mar 22 nicklas 71 # Note that parameters should be name of the environment variables to test,
6653 23 Mar 22 nicklas 72 # NOT directory paths.
6653 23 Mar 22 nicklas 73 rg_var_isdir()
6653 23 Mar 22 nicklas 74 {
6653 23 Mar 22 nicklas 75   for dir in $@ ; do
6653 23 Mar 22 nicklas 76     if [ ! "${!dir}" ]; then
6653 23 Mar 22 nicklas 77       rg_exit 1 "Variable '${dir}' has no value"
6653 23 Mar 22 nicklas 78     elif [ ! -d "${!dir}" ]; then
6653 23 Mar 22 nicklas 79       rg_exit 1 "Directory '${dir}-->${!dir}' doesn't exists"
6695 25 Apr 22 nicklas 80     elif [ "${JOB_DEBUG}" ]; then
6653 23 Mar 22 nicklas 81       echo "Directory '${dir}-->${!dir}' exists"
6653 23 Mar 22 nicklas 82     fi
6653 23 Mar 22 nicklas 83   done
6653 23 Mar 22 nicklas 84 }
6653 23 Mar 22 nicklas 85
6653 23 Mar 22 nicklas 86 # Check if one or more variables have been set to a value that points to an
6653 23 Mar 22 nicklas 87 # existing file. Exit with an error message if not.
6653 23 Mar 22 nicklas 88 # Note that parameters should be name of environment variables to test,
6653 23 Mar 22 nicklas 89 # NOT file paths.
6653 23 Mar 22 nicklas 90 rg_var_isfile()
6653 23 Mar 22 nicklas 91 {
6653 23 Mar 22 nicklas 92   for file in $@ ; do
6653 23 Mar 22 nicklas 93     if [ ! "${!file}" ]; then
6653 23 Mar 22 nicklas 94       rg_exit 1 "Variable '${file}' has no value"
6653 23 Mar 22 nicklas 95     elif [ ! -f "${!file}" ]; then
6653 23 Mar 22 nicklas 96       rg_exit 1 "File '${file}-->${!file}' doesn't exists"
6695 25 Apr 22 nicklas 97     elif [ "${JOB_DEBUG}" ]; then
6653 23 Mar 22 nicklas 98       echo "File '${file}-->${!file}' exists"
6653 23 Mar 22 nicklas 99     fi
6653 23 Mar 22 nicklas 100   done
6653 23 Mar 22 nicklas 101 }
6653 23 Mar 22 nicklas 102
6628 07 Mar 22 nicklas 103 # Check if one ore more directory exists. Exit with an error message if not.
6630 07 Mar 22 nicklas 104 rg_dir_exists()
6628 07 Mar 22 nicklas 105 {
6628 07 Mar 22 nicklas 106   for dir in $@ ; do
6628 07 Mar 22 nicklas 107     if [ ! -d "${dir}" ]; then
6628 07 Mar 22 nicklas 108       rg_exit 1 "Directory '${dir}' doesn't exists"
6695 25 Apr 22 nicklas 109     elif [ "${JOB_DEBUG}" ]; then
6653 23 Mar 22 nicklas 110       echo "Directory '${dir}' exists"
6628 07 Mar 22 nicklas 111     fi
6628 07 Mar 22 nicklas 112   done
6628 07 Mar 22 nicklas 113 }
6628 07 Mar 22 nicklas 114
6628 07 Mar 22 nicklas 115 # Check if one or more file exists. Exit with an error message if not.
6630 07 Mar 22 nicklas 116 rg_file_exists()
6628 07 Mar 22 nicklas 117 {
6628 07 Mar 22 nicklas 118   for file in $@ ; do
6628 07 Mar 22 nicklas 119     if [ ! -f "${file}" ]; then
6628 07 Mar 22 nicklas 120       rg_exit 1 "File '${file}' doesn't exists"
6695 25 Apr 22 nicklas 121     elif [ "${JOB_DEBUG}" ]; then
6653 23 Mar 22 nicklas 122       echo "File '${file}' exists"
6628 07 Mar 22 nicklas 123     fi
6628 07 Mar 22 nicklas 124   done
6628 07 Mar 22 nicklas 125 }