Browse Source

miaou_debug html-like

main
pvincent 2 weeks ago
parent
commit
385a1bbd5d
  1. 31
      poc

31
poc

@ -44,11 +44,10 @@ function is_true {
[[ "${1:-}" == 'true' ]] [[ "${1:-}" == 'true' ]]
} }
# FIXME: define an alias to bypass ARG evaluation when unnecessary!
# example:
# alias toto="bash -c \"[[ \\\$MIAOU_DEBUG == 'true' ]] && echo yes \\\$* || echo nope\""
# HINT: define an alias to bypass ARG evaluation when unnecessary!
# example: alias toto="bash -c \"[[ \\\$MIAOU_DEBUG == 'true' ]] && echo yes \\\$* || echo nope\""
function miaou_debug { function miaou_debug {
is_true "${MIAOU_DEBUG}" && >/dev/tty builtin echo -e "\e[90mDEBUG <==> \e[33m$*\e[0m" || true
is_true "${MIAOU_DEBUG}" && >/dev/tty builtin echo -e "\e[90m <== DEBUG ==> \e[33m$*\e[0m" || true
} }
function tty_ansi { function tty_ansi {
@ -73,9 +72,8 @@ function on_error {
failure_code="${1:-200}" failure_code="${1:-200}"
>/dev/tty printf '\r' # force carriage return explicitly >/dev/tty printf '\r' # force carriage return explicitly
miaou_debug "on_error: $failure_code ($$ -- $BASHPID)"
if [[ $$ == "$BASHPID" ]]; then if [[ $$ == "$BASHPID" ]]; then
miaou_debug "<on_error exit=$failure_code/>"
failure_type="COMMAND_ERROR" failure_type="COMMAND_ERROR"
print_miaou_error "${BASH_SOURCE[1]}" "${BASH_LINENO[0]}" "${failure_code}" "${failure_type}" '...' print_miaou_error "${BASH_SOURCE[1]}" "${BASH_LINENO[0]}" "${failure_code}" "${failure_type}" '...'
@ -91,6 +89,7 @@ function on_error {
exit "$failure_code" exit "$failure_code"
else else
miaou_debug "<on_error pipe=$failure_code sub_pid=$BASHPID pid=$$/>"
print_miaou_error "${BASH_SOURCE[1]}" "${BASH_LINENO[0]}" "${failure_code}" 'SUBSHELL_ERROR' print_miaou_error "${BASH_SOURCE[1]}" "${BASH_LINENO[0]}" "${failure_code}" 'SUBSHELL_ERROR'
kill -PIPE $$ kill -PIPE $$
fi fi
@ -122,22 +121,22 @@ function on_pipe {
failure_code=141 failure_code=141
failure_type="PIPE_ERROR" failure_type="PIPE_ERROR"
fi fi
# miaou_debug on_pipe: "${failure_code}"
miaou_debug "<on_pipe exit=$failure_code sub_pid=$BASHPID pid=$$/>"
exit "$failure_code" exit "$failure_code"
} }
function dump_stderr { function dump_stderr {
miaou_debug --stderr--
miaou_debug '<stderr>'
mapfile -t tmp_error <"$MIAOU_BASH_ERROR" mapfile -t tmp_error <"$MIAOU_BASH_ERROR"
tty_ansi FG_LIGHTBLUE tty_ansi FG_LIGHTBLUE
for i in "${tmp_error[@]}"; do echo "$i"; done for i in "${tmp_error[@]}"; do echo "$i"; done
tty_ansi RESET tty_ansi RESET
miaou_debug --end of stderr--
miaou_debug '</stderr>'
} }
function dump_failure { function dump_failure {
local i local i
miaou_debug --tty error box--
miaou_debug '<error_box>'
tty_ansi FG_MAGENTA tty_ansi FG_MAGENTA
length_box=$((${#failure_type} + ${#failure_code} + (2 * 2) + 2)) length_box=$((${#failure_type} + ${#failure_code} + (2 * 2) + 2))
[[ -v failure_payload ]] && length_box=$((length_box + ${#failure_payload} + (2 * 2) + 1)) [[ -v failure_payload ]] && length_box=$((length_box + ${#failure_payload} + (2 * 2) + 1))
@ -157,11 +156,11 @@ function dump_failure {
echo '╝' echo '╝'
echo " ║" echo " ║"
tty_ansi RESET tty_ansi RESET
miaou_debug --end of tty error box--
miaou_debug '</error_box>'
} }
function dump_stacktrace { function dump_stacktrace {
miaou_debug --stacktrace ${#error_source[@]}--
miaou_debug "<stacktrace count=${#error_source[@]}>"
local i source lineno funcname local i source lineno funcname
for i in "${!error_source[@]}"; do for i in "${!error_source[@]}"; do
tty_ansi FG_MAGENTA tty_ansi FG_MAGENTA
@ -176,7 +175,7 @@ function dump_stacktrace {
printf " \t%s" "$funcname" printf " \t%s" "$funcname"
echo echo
done done
miaou_debug --end of stacktrace--
miaou_debug '</stacktrace>'
} }
function on_exit { function on_exit {
@ -188,7 +187,7 @@ function on_exit {
2>&3 >/dev/tty dump_stacktrace 2>&3 >/dev/tty dump_stacktrace
fi fi
miaou_debug "on_exit $code"
miaou_debug "</source type=failure exit=$code pid=${BASHPID}>"
} }
## main ## main
@ -204,8 +203,8 @@ trap 'on_error $?' ERR
trap 'on_exit $?' EXIT trap 'on_exit $?' EXIT
trap 'on_pipe' PIPE trap 'on_pipe' PIPE
miaou_debug "--source from ${BASHPID}"
miaou_debug "<source from=$BASH_ARGV0 pid=${BASHPID}>"
exec 3>/dev/stderr exec 3>/dev/stderr
# shellcheck source=/dev/null # shellcheck source=/dev/null
2>"$MIAOU_BASH_ERROR" source "$BASH_ARGV0" 2>"$MIAOU_BASH_ERROR" source "$BASH_ARGV0"
miaou_debug '--source success'
miaou_debug "</source type=success pid=${BASHPID}>"
Loading…
Cancel
Save