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"