Improve error handling
This commit is contained in:
parent
75e39a5298
commit
d7be03af91
1 changed files with 12 additions and 18 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue