Browse Source

test poc false

main
pvincent 2 weeks ago
parent
commit
a0057f93be
  1. 60
      poc

60
poc

@ -114,8 +114,10 @@ function tty_ansi {
function print_miaou_error {
local source="$1" line="$2" code="$3" type="$4" payload="${5:-}"
>&2 echo -n "${source}: line ${line}: miaou_error: ${type} ${code}"
[[ -n "$payload" ]] && >&2 echo " payload: ${payload}" || >&2 echo
local message
message="${source}: line ${line}: miaou_error: ${type} ${code}"
[[ -n "$payload" ]] && message+=" payload: ${payload}"
[[ -v tmp_error ]] && miaou_debug "tmp_error=${#tmp_error[@]}" && tmp_error+=("$message") || >&2 echo "$message"
}
function on_error {
@ -194,7 +196,7 @@ function on_pipe {
}
function dump_stderr {
miaou_debug '<stderr>'
miaou_debug "<stderr count=${#tmp_error[@]}>"
tty_ansi FG_LIGHTBLUE
for i in "${tmp_error[@]}"; do echo "$i"; done
tty_ansi RESET
@ -273,32 +275,34 @@ function on_exit {
else
if [[ $code -gt 0 && ${#tmp_error[@]} -gt 0 ]]; then
last_error="${tmp_error[-1]}"
miaou_debug "<on_exit_tmp_error last={$last_error}>"
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]}"
error_source=("${BASH_SOURCE[@]}")
error_lineno=("${BASH_LINENO[@]}")
error_funcname=("${FUNCNAME[@]}")
unset 'error_source[0]' 'error_lineno[0]' 'error_funcname[0]'
unset 'error_source[-1]' 'error_lineno[-1]' 'error_funcname[-1]'
unset 'error_source[-1]' 'error_lineno[-1]' 'error_funcname[-1]'
error_source=("$source" "${error_source[@]}")
error_lineno=("$line" "${error_lineno[@]}")
error_funcname=("${error_funcname[@]}" '<main>')
failure_code=$code
failure_type='UNBOUND_VARIABLE'
failure_payload=$payload
miaou_debug "<unbound_variable source=${source} line=${line} payload={${failure_payload}}>"
fi
miaou_debug "<investigate_tmp_error last={$last_error}>"
regex='^(.*): line ([0-9]+): (.*): unbound variable$'
if [[ $code -eq 1 ]] && [[ "$last_error" =~ $regex ]]; then
local source line payload
source="${BASH_REMATCH[1]}"
line="${BASH_REMATCH[2]}"
payload="${BASH_REMATCH[3]}"
error_source=("${BASH_SOURCE[@]}")
error_lineno=("${BASH_LINENO[@]}")
error_funcname=("${FUNCNAME[@]}")
unset 'error_source[0]' 'error_lineno[0]' 'error_funcname[0]'
unset 'error_source[-1]' 'error_lineno[-1]' 'error_funcname[-1]'
unset 'error_source[-1]' 'error_lineno[-1]' 'error_funcname[-1]'
error_source=("$source" "${error_source[@]}")
error_lineno=("$line" "${error_lineno[@]}")
error_funcname=("${error_funcname[@]}" '<main>')
failure_code=$code
failure_type='UNBOUND_VARIABLE'
failure_payload=$payload
print_miaou_error "${BASH_SOURCE[1]}" "${BASH_LINENO[0]}" "${failure_code}" "${failure_type}" "${failure_payload}"
unset 'tmp_error[-2]' # replace previous last_error
miaou_debug "<unbound_variable source=${source} line=${line} payload={${failure_payload}}/>"
fi
miaou_debug "</on_exit_tmp_error>"
miaou_debug "</investigate_tmp_error>"
fi
fi

Loading…
Cancel
Save