The MMGen Project 3 жил өмнө
parent
commit
d7be03af91

+ 12 - 18
scripts/armbian_rootenc_setup.sh

@@ -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