diff --git a/poc b/poc index 410c76c..879aaea 100755 --- a/poc +++ b/poc @@ -74,7 +74,7 @@ function on_return { failure_type="RETURN" failure_payload="${FUNCNAME[0]}" print_miaou_error "${BASH_SOURCE[1]}" "${BASH_LINENO[0]}" "${failure_code}" "${failure_type}" "${failure_payload}" - miaou_debug "" + miaou_debug "" fi true } @@ -95,7 +95,7 @@ function exit { failure_type="EXIT" failure_payload="${error_funcname[0]}" - miaou_debug "" + miaou_debug "" print_miaou_error "${BASH_SOURCE[1]}" "${BASH_LINENO[0]}" "${failure_code}" "${failure_type}" "${failure_payload}" builtin exit "$failure_code" } @@ -147,9 +147,9 @@ function on_error { error_funcname=("${error_funcname[@]}") if [[ -v failure_payload ]]; then - miaou_debug "" + miaou_debug "" else - miaou_debug "" + miaou_debug "" fi builtin exit "$failure_code" @@ -163,6 +163,7 @@ function on_error { function on_pipe { trap - RETURN local tmp_error regex source lineno + miaou_debug "" error_source=("${BASH_SOURCE[@]}") error_lineno=("${BASH_LINENO[@]}") @@ -171,7 +172,8 @@ function on_pipe { unset 'error_source[-1]' 'error_lineno[-1]' 'error_funcname[-1]' unset 'error_source[-1]' 'error_lineno[-1]' 'error_funcname[-1]' - mapfile -t tmp_error <"$MIAOU_BASH_ERROR" + miaou_debug '' && mapfile -t tmp_error <"$MIAOU_BASH_ERROR" + last_error="${tmp_error[-1]}" regex='^(.*): line ([0-9]+): miaou_error: SUBSHELL_ERROR ([0-9]+) payload: (.*)$' if [[ $last_error =~ $regex ]]; then @@ -187,7 +189,7 @@ function on_pipe { failure_code=141 failure_type="PIPE_ERROR" fi - miaou_debug "" + miaou_debug "" builtin exit "$failure_code" } @@ -225,7 +227,7 @@ function dump_failure { } function dump_stacktrace { - miaou_debug "" + miaou_debug "" local i source lineno funcname for i in "${!error_source[@]}"; do tty_ansi FG_MAGENTA @@ -247,15 +249,17 @@ function on_exit { trap - RETURN local code="${1:-0}" last_error regex - miaou_debug "" + miaou_debug "" - [[ ! -v tmp_error ]] && mapfile -t tmp_error <"$MIAOU_BASH_ERROR" + [[ ! -v tmp_error ]] && + miaou_debug '' && + mapfile -t tmp_error <"$MIAOU_BASH_ERROR" if [[ -v failure_type && "$failure_type" == 'RETURN' ]]; then last_error="${tmp_error[-1]}" regex='^(.*): line ([0-9]+): miaou_error: RETURN [0-9]+' if [[ "$last_error" =~ $regex ]]; then - miaou_debug "" + miaou_debug "" local source line source="${BASH_REMATCH[1]}" line="${BASH_REMATCH[2]}" @@ -263,24 +267,21 @@ function on_exit { error_lineno=("$line" "${error_lineno[@]}") error_funcname=("$failure_payload" "${error_funcname[@]}") else - miaou_debug "" + miaou_debug "" fi else if [[ $code -gt 0 && ${#tmp_error[@]} -gt 0 ]]; then last_error="${tmp_error[-1]}" - miaou_debug "" + miaou_debug "" if [[ $code -eq 1 ]]; then regex='^(.*): line ([0-9]+): (.*): unbound variable$' if [[ "$last_error" =~ $regex ]]; then local source line payload + source="${BASH_REMATCH[1]}" line="${BASH_REMATCH[2]}" payload="${BASH_REMATCH[3]}" - miaou_debug "" - failure_code=$code - failure_type='UNBOUND_VARIABLE' - failure_payload="${BASH_REMATCH[3]}" error_source=("${BASH_SOURCE[@]}") error_lineno=("${BASH_LINENO[@]}") error_funcname=("${FUNCNAME[@]}") @@ -290,6 +291,11 @@ function on_exit { error_source=("$source" "${error_source[@]}") error_lineno=("$line" "${error_lineno[@]}") error_funcname=("${error_funcname[@]}" '
') + + failure_code=$code + failure_type='UNBOUND_VARIABLE' + failure_payload=$payload + miaou_debug "" fi fi miaou_debug "" @@ -302,9 +308,9 @@ function on_exit { 2>&3 >&4 dump_stacktrace fi if [[ $code -gt 0 ]]; then - miaou_debug "" + miaou_debug "" else - miaou_debug "" + miaou_debug "" fi } @@ -325,6 +331,6 @@ trap 'on_return' RETURN if [[ -e /proc/$$/fd/3 ]]; then exec 4>&3 3>&-; else exec 4>/dev/tty; fi # swap fd 3 4 when fd 3 sent off exec 3>/dev/stderr 2>"$MIAOU_BASH_ERROR" -miaou_debug "" +miaou_debug "" # shellcheck source=/dev/null source "$BASH_ARGV0"