diff --git a/poc b/poc index fb57103..5519e10 100755 --- a/poc +++ b/poc @@ -47,14 +47,14 @@ function is_true { # 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 { - is_true "${MIAOU_DEBUG}" && >/dev/tty builtin echo -e "\e[90m <== DEBUG ==> \e[33m$*\e[0m" || true + is_true "${MIAOU_DEBUG}" && >&4 builtin echo -e "\e[90m <== DEBUG ==> \e[33m$*\e[0m" || true } function tty_ansi { local code for code in "$@"; do if [[ -v ANSI[$code] ]]; then - >/dev/tty echo -ne "\e[${ANSI[$code]}m" + >&4 echo -ne "\e[${ANSI[$code]}m" else >&2 echo "unknown ansi key: <$code>" break @@ -70,7 +70,7 @@ function print_miaou_error { function on_error { failure_code="${1:-200}" - >/dev/tty printf '\r' # force carriage return explicitly + >&4 printf '\r' # force carriage return explicitly if [[ $$ == "$BASHPID" ]]; then miaou_debug "" @@ -214,8 +214,8 @@ function on_exit { fi if [[ -v failure_type ]]; then - 2>&3 >/dev/tty dump_failure - 2>&3 >/dev/tty dump_stacktrace + 2>&3 >&4 dump_failure + 2>&3 >&4 dump_stacktrace fi miaou_debug "" @@ -234,8 +234,11 @@ trap 'on_error $?' ERR trap 'on_exit $?' EXIT trap 'on_pipe' PIPE +# exec 4>/dev/tty +[[ -e /proc/$$/fd/3 ]] && exec 4>&3 3>&- || exec 4>/dev/tty +exec 3>/dev/stderr 2>"$MIAOU_BASH_ERROR" + miaou_debug "" -exec 3>/dev/stderr # shellcheck source=/dev/null -2>"$MIAOU_BASH_ERROR" source "$BASH_ARGV0" +source "$BASH_ARGV0" miaou_debug ""