|
|
@ -16,12 +16,15 @@ function is_true { |
|
|
# example: |
|
|
# example: |
|
|
# alias toto="bash -c \"[[ \\\$MIAOU_DEBUG == 'true' ]] && echo yes \\\$* || echo nope\"" |
|
|
# 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 "\r\e[90mDEBUG <==> \e[95m$*\e[0m" || true |
|
|
|
|
|
|
|
|
is_true "${MIAOU_DEBUG}" && >/dev/tty builtin echo -e "\e[90mDEBUG <==> \e[33m$*\e[0m" || true |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function on_error { |
|
|
function on_error { |
|
|
|
|
|
>/dev/tty printf '\r' # force carriage return explicitly |
|
|
|
|
|
|
|
|
code="${1:-100}" |
|
|
code="${1:-100}" |
|
|
miaou_debug "on_error: $code ($$ -- $BASHPID)" |
|
|
miaou_debug "on_error: $code ($$ -- $BASHPID)" |
|
|
|
|
|
|
|
|
if [[ $$ == "$BASHPID" ]]; then |
|
|
if [[ $$ == "$BASHPID" ]]; then |
|
|
>&2 echo "${BASH_SOURCE[1]}: line ${BASH_LINENO[0]}: command_error: ${code}" |
|
|
>&2 echo "${BASH_SOURCE[1]}: line ${BASH_LINENO[0]}: command_error: ${code}" |
|
|
failure_type="COMMAND_ERROR" |
|
|
failure_type="COMMAND_ERROR" |
|
|
@ -33,19 +36,34 @@ function on_error { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function dump_stderr { |
|
|
function dump_stderr { |
|
|
>&2 printf '' # force flush |
|
|
|
|
|
|
|
|
|
|
|
miaou_debug --stderr-- |
|
|
miaou_debug --stderr-- |
|
|
mapfile -t tmp_error <"$MIAOU_BASH_ERROR" |
|
|
mapfile -t tmp_error <"$MIAOU_BASH_ERROR" |
|
|
for i in "${tmp_error[@]}"; do >&4 echo -e "$i"; done |
|
|
|
|
|
|
|
|
for i in "${tmp_error[@]}"; do |
|
|
|
|
|
echo -e "$i" |
|
|
|
|
|
done |
|
|
miaou_debug --end of stderr-- |
|
|
miaou_debug --end of stderr-- |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function dump_failure { |
|
|
|
|
|
miaou_debug --error box-- |
|
|
|
|
|
echo FAILURE: "$failure_type" |
|
|
|
|
|
miaou_debug --end of error box-- |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function dump_stacktrace { |
|
|
|
|
|
miaou_debug --stacktrace-- |
|
|
|
|
|
echo stacktrace... |
|
|
|
|
|
miaou_debug --end of stacktrace-- |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
function on_exit { |
|
|
function on_exit { |
|
|
code="${1:-0}" |
|
|
code="${1:-0}" |
|
|
failure_type="${failure_type:-UNDEFINED}" |
|
|
failure_type="${failure_type:-UNDEFINED}" |
|
|
|
|
|
|
|
|
dump_stderr |
|
|
|
|
|
|
|
|
2>&3 >&3 dump_stderr |
|
|
|
|
|
2>&3 >&3 dump_failure |
|
|
|
|
|
2>&3 >&3 dump_stacktrace |
|
|
|
|
|
|
|
|
miaou_debug "on_exit $code $failure_type" |
|
|
miaou_debug "on_exit $code $failure_type" |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -73,6 +91,7 @@ trap 'on_exit $?' EXIT |
|
|
trap 'on_pipe' PIPE |
|
|
trap 'on_pipe' PIPE |
|
|
|
|
|
|
|
|
echo "--SOURCE scenario ${BASHPID}" |
|
|
echo "--SOURCE scenario ${BASHPID}" |
|
|
exec 3> >(tee "$MIAOU_BASH_ERROR" >/dev/null) 4>/dev/stderr |
|
|
|
|
|
source ./test/stub/scenario.bash subshell_term 2>&3 |
|
|
|
|
|
|
|
|
exec 3>/dev/stderr |
|
|
|
|
|
2>"$MIAOU_BASH_ERROR" source ./test/stub/scenario.bash subshell_term |
|
|
|
|
|
exec 3>- |
|
|
echo "--SUCCESS scenario" |
|
|
echo "--SUCCESS scenario" |