Improve error handling

This commit is contained in:
The MMGen Project 2021-04-10 13:08:28 +00:00
commit d7be03af91
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2

View file

@ -137,29 +137,25 @@ die() {
exit 1
}
_fmsg() {
local funcname=$1 errval=$2 res
_return_handler() {
local funcname=${FUNCNAME[1]} exitval=$? res
if [ "${funcname:0:1}" == '_' -o "$no_fmsg" ]; then
no_fmsg=
return 0
fi
if [ "$errval" -eq 0 ]; then res='OK'; else res="False ($errval)"; fi
if [ "$exitval" -eq 0 ]; then res='OK'; else res="False ($exitval)"; fi
printf "$BLUE%-32s $res$RESET\n" "$funcname" >&$stdout_dup
}
_sigint_handler() {
warn "\nExiting at user request"
usr_exit=1
exit 1
}
_exit_handler() {
local err=$?
_show_output
[ $err -ne 0 -a -z "$usr_exit" ] && {
rmsg "$SCRIPT_DESC exiting with error (exit code $err)"
}
return $err
_error_handler() {
local exitval=$?
warn "$(basename ${BASH_SOURCE[1]}):${BASH_LINENO[0]}: ${FUNCNAME[1]}() failed at command '$BASH_COMMAND'"
rmsg "$SCRIPT_DESC exiting with error ($exitval)"
}
_do_header() {
@ -471,8 +467,6 @@ _preclean() {
}
_clean() {
local err=$?
[ $err -ne 0 -a -z "$usr_exit" ] && rmsg "$SCRIPT_DESC exiting with error (exit code $err)"
pu_msg "Cleaning up, please wait..."
_show_output
close_loopmount
@ -661,7 +655,6 @@ _user_confirm() {
[ "$dfl_action" == 'yes' -a -z "$reply" ] && return
[ "$reply" == 'y' -o "$reply" == 'Y' ] && return
warn "Exiting at user request"
usr_exit=1
exit 1
}
@ -1106,6 +1099,8 @@ _set_env_vars() {
# begin execution
set -e
while getopts hCdmfFpRsuvz OPT
do
case "$OPT" in
@ -1128,11 +1123,12 @@ done
shift $((OPTIND-1))
trap '_fmsg "$FUNCNAME" $?' RETURN
trap '_return_handler' RETURN
trap '_sigint_handler' INT
trap '_exit_handler' EXIT
trap '_error_handler' ERR
set -o functrace
set -o errtrace
exec {stdout_dup}>&1
exec {stderr_dup}>&2
@ -1148,7 +1144,6 @@ _set_env_vars $@
if [ "$ARG1" == 'in_target' ]; then
SCRIPT_DESC='Target script'
set -e
_hide_output
[ "$target_distro" == 'bionic' ] && {
echo 'export CRYPTSETUP=y' > '/etc/initramfs-tools/conf.d/cryptsetup'
@ -1169,7 +1164,6 @@ else
_warn_user_opts
_confirm_user_vars
set -e
[ "$IP_ADDRESS" == 'none' ] || get_authorized_keys
create_build_dir