mirror of
https://github.com/edgelesssys/constellation.git
synced 2024-12-25 23:49:37 -05:00
a0fddd44eb
Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
63 lines
1.2 KiB
Bash
Executable File
63 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
set -o errtrace
|
|
shopt -s inherit_errexit
|
|
|
|
function printErr {
|
|
echo -e "\033[0;31mERROR:\033[0m ${1}"
|
|
}
|
|
|
|
function _exitHandler {
|
|
local exit_code=$1
|
|
if [[ ${exit_code} -ne 0 ]]; then
|
|
printErr "$0: exit status ${exit_code}"
|
|
fi
|
|
}
|
|
|
|
function _errorHandler {
|
|
local line=$1
|
|
local linecallfunc=$2
|
|
local command="$3"
|
|
local funcstack="$4"
|
|
printErr "$0: '${command}' failed at line ${line}"
|
|
|
|
if [[ ${funcstack} != "::" ]]; then
|
|
echo -ne "\tin ${funcstack} "
|
|
if [[ ${linecallfunc} != "" ]]; then
|
|
echo "called at line ${linecallfunc}"
|
|
else
|
|
echo
|
|
fi
|
|
fi
|
|
|
|
}
|
|
|
|
_exitHandlers=()
|
|
_errorHandlers=()
|
|
|
|
function registerExitHandler {
|
|
_exitHandlers+=("$1")
|
|
}
|
|
|
|
function registerErrorHandler {
|
|
_errorHandler+=("$1")
|
|
}
|
|
|
|
function _callExitHandlers {
|
|
_exitHandlers+=(_exitHandler) # Add our handler last.
|
|
for h in "${_exitHandlers[@]}"; do
|
|
${h} "$@"
|
|
done
|
|
}
|
|
|
|
function _callErrorHandlers {
|
|
_errorHandlers+=(_errorHandler) # Add our handler last.
|
|
for h in "${_errorHandlers[@]}"; do
|
|
${h} "$@"
|
|
done
|
|
}
|
|
|
|
trap '_callErrorHandlers $LINENO $BASH_LINENO "$BASH_COMMAND" $(printf "::%s" ${FUNCNAME[@]:-})' ERR
|
|
trap '_callExitHandlers $?' EXIT
|