quick fix
This commit is contained in:
+61
-57
@@ -273,6 +273,7 @@ function uninstall {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function populate_error_arrays {
|
function populate_error_arrays {
|
||||||
|
|
||||||
local source=$1 line=$2 payload=$3
|
local source=$1 line=$2 payload=$3
|
||||||
unset 'error_source[0]' 'error_lineno[0]' 'error_funcname[0]'
|
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]'
|
||||||
@@ -489,62 +490,47 @@ function on_exit {
|
|||||||
|
|
||||||
load_tmp_error
|
load_tmp_error
|
||||||
|
|
||||||
if [[ -v failure_type && "$failure_type" == 'RETURN' ]]; then
|
if [[ $failure_code -gt 0 ]]; then
|
||||||
last_error="${tmp_error[-1]}"
|
if [[ -v failure_type && "$failure_type" == 'RETURN' ]]; then
|
||||||
regex='^(.*): line ([0-9]+): miaou_error: RETURN [0-9]+'
|
|
||||||
if [[ "$last_error" =~ $regex ]]; then
|
|
||||||
miaou_debug "<return code=$failure_code/>"
|
|
||||||
local source line
|
|
||||||
source="${BASH_REMATCH[1]}"
|
|
||||||
line="${BASH_REMATCH[2]}"
|
|
||||||
error_source=("$source" "${error_source[@]}")
|
|
||||||
error_lineno=("$line" "${error_lineno[@]}")
|
|
||||||
error_funcname=("$failure_payload" "${error_funcname[@]}")
|
|
||||||
else
|
|
||||||
miaou_debug "<return type=unexpected/>"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [[ -v failure_type && "$failure_type" == 'COMMAND_NOT_FOUND' ]]; then
|
|
||||||
unset 'tmp_error[-1]' 'tmp_error[-1]'
|
|
||||||
add_miaou_error "${BASH_SOURCE[2]}" "${BASH_LINENO[1]}" "${failure_code}" "${failure_type}" "${failure_payload}"
|
|
||||||
miaou_debug "<command_not_found change_stderr count=${#tmp_error[@]}/>"
|
|
||||||
|
|
||||||
elif [[ -v failure_type && "$failure_type" == 'FILE_NOT_FOUND' ]]; then
|
|
||||||
unset 'tmp_error[-1]' 'tmp_error[-1]'
|
|
||||||
add_miaou_error "${BASH_SOURCE[2]}" "${BASH_LINENO[1]}" "${failure_code}" "${failure_type}" "${failure_payload}"
|
|
||||||
miaou_debug "<file_not_found change_stderr count=${#tmp_error[@]}/>"
|
|
||||||
|
|
||||||
elif [[ -v failure_type && "$failure_type" == 'CHILD_ERROR' ]]; then
|
|
||||||
for ((i = 0; i < ${#extra_source[@]}; i++)); do unset 'tmp_error[-1]'; done
|
|
||||||
add_miaou_error "${BASH_SOURCE[2]}" "${BASH_LINENO[1]}" "${failure_code}" "${failure_type}" "${failure_payload}"
|
|
||||||
miaou_debug "<child_error change_stderr count=${#tmp_error[@]}/>"
|
|
||||||
|
|
||||||
elif [[ ! -v failure_type ]]; then
|
|
||||||
if [[ $failure_code -gt 0 && ${#tmp_error[@]} -gt 0 ]]; then
|
|
||||||
last_error="${tmp_error[-1]}"
|
last_error="${tmp_error[-1]}"
|
||||||
miaou_debug "<investigate_tmp_error last={$last_error}>"
|
regex='^(.*): line ([0-9]+): miaou_error: RETURN [0-9]+'
|
||||||
|
if [[ "$last_error" =~ $regex ]]; then
|
||||||
regex='^(.*): line ([0-9]+): (.*): unbound variable$'
|
miaou_debug "<return code=$failure_code/>"
|
||||||
if [[ $failure_code -eq 1 ]] && [[ "$last_error" =~ $regex ]]; then
|
local source line
|
||||||
failure_type='UNBOUND_VARIABLE'
|
source="${BASH_REMATCH[1]}"
|
||||||
failure_payload="${BASH_REMATCH[3]}"
|
line="${BASH_REMATCH[2]}"
|
||||||
failure_code=2
|
error_source=("$source" "${error_source[@]}")
|
||||||
|
error_lineno=("$line" "${error_lineno[@]}")
|
||||||
local source="${BASH_REMATCH[1]}" line="${BASH_REMATCH[2]}"
|
error_funcname=("$failure_payload" "${error_funcname[@]}")
|
||||||
error_source=("${BASH_SOURCE[@]}")
|
|
||||||
error_lineno=("${BASH_LINENO[@]}")
|
|
||||||
error_funcname=("${FUNCNAME[@]}")
|
|
||||||
populate_error_arrays "$source" "$line" "$failure_payload"
|
|
||||||
|
|
||||||
unset 'tmp_error[-1]'
|
|
||||||
add_miaou_error "$source" "$line" "${failure_code}" "${failure_type}" "${failure_payload}"
|
|
||||||
miaou_debug "<unbound_variable source=${source} line=${line} payload=${failure_payload}/>"
|
|
||||||
else
|
else
|
||||||
regex='^(.*): line ([0-9]+): (.*): No such file or directory$'
|
miaou_debug "<return type=unexpected/>"
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif [[ -v failure_type && "$failure_type" == 'COMMAND_NOT_FOUND' ]]; then
|
||||||
|
unset 'tmp_error[-1]' 'tmp_error[-1]'
|
||||||
|
add_miaou_error "${BASH_SOURCE[2]}" "${BASH_LINENO[1]}" "${failure_code}" "${failure_type}" "${failure_payload}"
|
||||||
|
miaou_debug "<command_not_found change_stderr count=${#tmp_error[@]}/>"
|
||||||
|
|
||||||
|
elif [[ -v failure_type && "$failure_type" == 'FILE_NOT_FOUND' ]]; then
|
||||||
|
unset 'tmp_error[-1]' 'tmp_error[-1]'
|
||||||
|
add_miaou_error "${BASH_SOURCE[2]}" "${BASH_LINENO[1]}" "${failure_code}" "${failure_type}" "${failure_payload}"
|
||||||
|
miaou_debug "<file_not_found change_stderr count=${#tmp_error[@]}/>"
|
||||||
|
|
||||||
|
elif [[ -v failure_type && "$failure_type" == 'CHILD_ERROR' ]]; then
|
||||||
|
for ((i = 0; i < ${#extra_source[@]}; i++)); do unset 'tmp_error[-1]'; done
|
||||||
|
add_miaou_error "${BASH_SOURCE[2]}" "${BASH_LINENO[1]}" "${failure_code}" "${failure_type}" "${failure_payload}"
|
||||||
|
miaou_debug "<child_error change_stderr count=${#tmp_error[@]}/>"
|
||||||
|
|
||||||
|
elif [[ ! -v failure_type ]]; then
|
||||||
|
if [[ ${#tmp_error[@]} -gt 0 ]]; then
|
||||||
|
last_error="${tmp_error[-1]}"
|
||||||
|
miaou_debug "<investigate_tmp_error last={$last_error}>"
|
||||||
|
|
||||||
|
regex='^(.*): line ([0-9]+): (.*): unbound variable$'
|
||||||
if [[ $failure_code -eq 1 ]] && [[ "$last_error" =~ $regex ]]; then
|
if [[ $failure_code -eq 1 ]] && [[ "$last_error" =~ $regex ]]; then
|
||||||
failure_type='SOURCE_NOT_FOUND'
|
failure_type='UNBOUND_VARIABLE'
|
||||||
failure_payload="${BASH_REMATCH[3]}"
|
failure_payload="${BASH_REMATCH[3]}"
|
||||||
failure_code=3
|
failure_code=2
|
||||||
|
|
||||||
local source="${BASH_REMATCH[1]}" line="${BASH_REMATCH[2]}"
|
local source="${BASH_REMATCH[1]}" line="${BASH_REMATCH[2]}"
|
||||||
error_source=("${BASH_SOURCE[@]}")
|
error_source=("${BASH_SOURCE[@]}")
|
||||||
@@ -554,16 +540,33 @@ function on_exit {
|
|||||||
|
|
||||||
unset 'tmp_error[-1]'
|
unset 'tmp_error[-1]'
|
||||||
add_miaou_error "$source" "$line" "${failure_code}" "${failure_type}" "${failure_payload}"
|
add_miaou_error "$source" "$line" "${failure_code}" "${failure_type}" "${failure_payload}"
|
||||||
miaou_debug "<source_not_found source=${source} line=${line} payload=${failure_payload}/>"
|
miaou_debug "<unbound_variable source=${source} line=${line} payload=${failure_payload}/>"
|
||||||
else
|
else
|
||||||
failure_type='UNKNOWN ERROR'
|
regex='^(.*): line ([0-9]+): (.*): No such file or directory$'
|
||||||
failure_payload="$BASH_COMMAND"
|
if [[ $failure_code -eq 1 ]] && [[ "$last_error" =~ $regex ]]; then
|
||||||
|
failure_type='SOURCE_NOT_FOUND'
|
||||||
|
failure_payload="${BASH_REMATCH[3]}"
|
||||||
|
failure_code=3
|
||||||
|
|
||||||
|
local source="${BASH_REMATCH[1]}" line="${BASH_REMATCH[2]}"
|
||||||
|
error_source=("${BASH_SOURCE[@]}")
|
||||||
|
error_lineno=("${BASH_LINENO[@]}")
|
||||||
|
error_funcname=("${FUNCNAME[@]}")
|
||||||
|
populate_error_arrays "$source" "$line" "$failure_payload"
|
||||||
|
|
||||||
|
unset 'tmp_error[-1]'
|
||||||
|
add_miaou_error "$source" "$line" "${failure_code}" "${failure_type}" "${failure_payload}"
|
||||||
|
miaou_debug "<source_not_found source=${source} line=${line} payload=${failure_payload}/>"
|
||||||
|
else
|
||||||
|
failure_type='UNKNOWN ERROR'
|
||||||
|
failure_payload="$BASH_COMMAND"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
miaou_debug "</investigate_tmp_error>"
|
||||||
fi
|
fi
|
||||||
miaou_debug "</investigate_tmp_error>"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
miaou_debug '<dump>'
|
||||||
if ! is_true $CHILD_PROCESS; then
|
if ! is_true $CHILD_PROCESS; then
|
||||||
2>&3 >&3 dump_stderr
|
2>&3 >&3 dump_stderr
|
||||||
if [[ -v failure_type && $failure_code -gt 0 ]]; then
|
if [[ -v failure_type && $failure_code -gt 0 ]]; then
|
||||||
@@ -575,6 +578,7 @@ function on_exit {
|
|||||||
elif [[ -v failure_type ]]; then
|
elif [[ -v failure_type ]]; then
|
||||||
2>&3 >&4 save_err_trace_to_main
|
2>&3 >&4 save_err_trace_to_main
|
||||||
fi
|
fi
|
||||||
|
miaou_debug '</dump>'
|
||||||
|
|
||||||
if [[ $failure_code -gt 0 ]]; then
|
if [[ $failure_code -gt 0 ]]; then
|
||||||
miaou_debug "</on_exit code=$failure_code>"
|
miaou_debug "</on_exit code=$failure_code>"
|
||||||
|
|||||||
Reference in New Issue
Block a user