enhance notification and error handling system
This commit is contained in:
parent
71171dc989
commit
3224ab4867
|
@ -13,6 +13,11 @@ FETCHTRIES="3"
|
||||||
# put all its temporary files and caches.
|
# put all its temporary files and caches.
|
||||||
TEMPDIR="/var/tmp/ezbuild"
|
TEMPDIR="/var/tmp/ezbuild"
|
||||||
|
|
||||||
|
# Treats all errors as fatal, when enabled. Disabling this option allows EzBuild scripts
|
||||||
|
# to continue execution when some non-fatal errors occure. They all will be treated as
|
||||||
|
# warnings then, but notifications will be still sent if enabled.
|
||||||
|
FATALERRORS="yes"
|
||||||
|
|
||||||
# When enabled, causes EzBuild to save every information about progress and all executed
|
# When enabled, causes EzBuild to save every information about progress and all executed
|
||||||
# commands output in the log file. This might provide many useful information necessary
|
# commands output in the log file. This might provide many useful information necessary
|
||||||
# for debugging purposes.
|
# for debugging purposes.
|
||||||
|
|
|
@ -58,6 +58,20 @@ function die() {
|
||||||
exit ${STATUS}
|
exit ${STATUS}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Failure handler; outputs warning or error depending on user settings
|
||||||
|
# Parameters: %message% [%status%]
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
function fail() {
|
||||||
|
local STATUS=${2:-1}
|
||||||
|
if isEnabled ${FATALERRORS}; then
|
||||||
|
die "${1}" ${STATUS}
|
||||||
|
else
|
||||||
|
pushNotification ${STATUS} "${1}"
|
||||||
|
printWarn "${1}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
# Checks whether a defined variable contain specified element or not
|
# Checks whether a defined variable contain specified element or not
|
||||||
# Parameters: %element% %variable%
|
# Parameters: %element% %variable%
|
||||||
|
@ -173,10 +187,32 @@ function logOutput() {
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
function notify() {
|
function notify() {
|
||||||
if isEnabled ${LOGGING} && isSet NOTIFY && isEnabled ${EZNOTIFY}; then
|
if isEnabled ${LOGGING} && isSet NOTIFY && isEnabled ${EZNOTIFY}; then
|
||||||
local LOGS="Full output from logs:\n\n$(cat ${LOGFILE})"
|
local MESG=""
|
||||||
local MESG="The ${EZNAME} has failed with code: ${1} and message: ${2}"
|
local SEND=0
|
||||||
local TOPIC="The ${EZNAME} process has failed!"
|
if [ ${1} -ne 0 ]; then
|
||||||
echo -e "${MESG}\n${LOGS}" | mailx -s "${TOPIC}" "${NOTIFY}"
|
MESG="The ${EZNAME} has failed with code: ${1} and message: ${2}"
|
||||||
|
SEND=1
|
||||||
|
if [ ${#NOTIFICATIONS[@]} -ne 0 ]; then
|
||||||
|
MESG="${MESG}\nThere were also some non-fatal errors that has \
|
||||||
|
been treated as warnings:"
|
||||||
|
fi
|
||||||
|
elif [ ${#NOTIFICATIONS[@]} -ne 0 ]; then
|
||||||
|
MESG="The ${EZNAME} process has ended its job without any fatal \
|
||||||
|
error, but there still were some non-fatal errors that has \
|
||||||
|
been treated as warnings:"
|
||||||
|
SEND=1
|
||||||
|
fi
|
||||||
|
MESG=$(echo -e "${MESG}" | awk -v OFS=" " '$1=$1')
|
||||||
|
if [ ${SEND} -eq 1 ]; then
|
||||||
|
if [ ${#NOTIFICATIONS[@]} -ne 0 ]; then
|
||||||
|
for NOTIFICATION in "${NOTIFICATIONS[@]}"; do
|
||||||
|
MESG="${MESG}\n * ${NOTIFICATION}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
local LOGS="Full output from log file:\n\n$(cat ${LOGFILE})"
|
||||||
|
local TOPIC="The ${EZNAME} process has produced an error!"
|
||||||
|
echo -e "${MESG}\n\n\n${LOGS}" | mailx -s "${TOPIC}" "${NOTIFY}"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,7 +261,20 @@ function printWarn() {
|
||||||
echo -e " ${MESSAGE_WARN} ${@}"
|
echo -e " ${MESSAGE_WARN} ${@}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Adds new non-fatal error notification message to the queue
|
||||||
|
# Parameters: %status% %message%
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
function pushNotification() {
|
||||||
|
local NUM=${#NOTIFICATIONS[@]}
|
||||||
|
NOTIFICATIONS[${NUM}]="Code: ${1} Message: ${2}"
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# Optionally sends all notifications from queue and aborts program execution
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
function quit() {
|
function quit() {
|
||||||
|
notify 0
|
||||||
echo -e "${COLOR_BOLD}ALL DONE!\n${COLOR_NORMAL}"
|
echo -e "${COLOR_BOLD}ALL DONE!\n${COLOR_NORMAL}"
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue