Add err()/err_if_not_set()
* err() and err_if_not_set() do error-like reporting without aborting the script
* die_if_not_set() now properly dies
* add is_running() from Grenade
Change-Id: I38b88112415a3c07e35bbc2dc65ad839c4d63fce
diff --git a/functions b/functions
index 445af5f..95ae239 100644
--- a/functions
+++ b/functions
@@ -57,15 +57,12 @@
# die $LINENO "message"
function die() {
local exitcode=$?
+ set +o xtrace
+ local line=$1; shift
if [ $exitcode == 0 ]; then
exitcode=1
fi
- set +o xtrace
- local msg="[ERROR] $0:$1 $2"
- echo $msg 1>&2;
- if [[ -n ${SCREEN_LOGDIR} ]]; then
- echo $msg >> "${SCREEN_LOGDIR}/error.log"
- fi
+ err $line "$*"
exit $exitcode
}
@@ -75,14 +72,49 @@
# NOTE: env-var is the variable name without a '$'
# die_if_not_set $LINENO env-var "message"
function die_if_not_set() {
- (
- local exitcode=$?
- set +o xtrace
- local evar=$2; shift
- if ! is_set $evar || [ $exitcode != 0 ]; then
- die $@
- fi
- )
+ local exitcode=$?
+ FXTRACE=$(set +o | grep xtrace)
+ set +o xtrace
+ local line=$1; shift
+ local evar=$1; shift
+ if ! is_set $evar || [ $exitcode != 0 ]; then
+ die $line "$*"
+ fi
+ $FXTRACE
+}
+
+
+# Prints line number and "message" in error format
+# err $LINENO "message"
+function err() {
+ local exitcode=$?
+ errXTRACE=$(set +o | grep xtrace)
+ set +o xtrace
+ local msg="[ERROR] $0:$1 $2"
+ echo $msg 1>&2;
+ if [[ -n ${SCREEN_LOGDIR} ]]; then
+ echo $msg >> "${SCREEN_LOGDIR}/error.log"
+ fi
+ $errXTRACE
+ return $exitcode
+}
+
+
+# Checks an environment variable is not set or has length 0 OR if the
+# exit code is non-zero and prints "message"
+# NOTE: env-var is the variable name without a '$'
+# err_if_not_set $LINENO env-var "message"
+function err_if_not_set() {
+ local exitcode=$?
+ errinsXTRACE=$(set +o | grep xtrace)
+ set +o xtrace
+ local line=$1; shift
+ local evar=$1; shift
+ if ! is_set $evar || [ $exitcode != 0 ]; then
+ err $line "$*"
+ fi
+ $errinsXTRACE
+ return $exitcode
}
@@ -538,6 +570,7 @@
sed -i -e "/^\[$section\]/,/^\[.*\]/ s|^\($option[ \t]*=.*$\)|#\1|" "$file"
}
+
# Uncomment an option in an INI file
# iniuncomment config-file section option
function iniuncomment() {
@@ -559,6 +592,7 @@
echo ${line#*=}
}
+
# Determinate is the given option present in the INI file
# ini_has_option config-file section option
function ini_has_option() {
@@ -570,6 +604,7 @@
[ -n "$line" ]
}
+
# Set an option in an INI file
# iniset config-file section option value
function iniset() {
@@ -592,6 +627,7 @@
fi
}
+
# Get a multiple line option from an INI file
# iniget_multiline config-file section option
function iniget_multiline() {
@@ -603,6 +639,7 @@
echo ${values}
}
+
# Set a multiple line option in an INI file
# iniset_multiline config-file section option value1 value2 valu3 ...
function iniset_multiline() {
@@ -632,6 +669,7 @@
done
}
+
# Append a new option in an ini file without replacing the old value
# iniadd config-file section option value1 value2 value3 ...
function iniadd() {
@@ -643,6 +681,17 @@
iniset_multiline $file $section $option $values
}
+# Find out if a process exists by partial name.
+# is_running name
+function is_running() {
+ local name=$1
+ ps auxw | grep -v grep | grep ${name} > /dev/null
+ RC=$?
+ # some times I really hate bash reverse binary logic
+ return $RC
+}
+
+
# is_service_enabled() checks if the service(s) specified as arguments are
# enabled by the user in ``ENABLED_SERVICES``.
#