#!/usr/bin/env miaou-bash code=118 failure_type='SUBSHELL TERM' failure_payload='blabla' stack_sources=('file.bash' './lib/utility.bash' 'file.bash') stack_lines=(18 56 12) stack_functions=('f2' 'f1' '
') # function ansi_block_continuation { # tput sc # tput cuu 1 # BG=RED FG=BLACK style_ansi "\t╦" # tput rc # FG=RED style_ansi "\t║\n" # } function ansi_block_error { BG=RED FG=BLACK PADDING=2 local content detail exit_code content=$(style_ansi "$1") content=$(style_padding "$content") detail=$(BG=BLACK style_padding "$2") exit_code=$(FG=CYAN style_ansi " $3") BLOCK_CONTINUATION_COL=5 style_block "$content$detail$exit_code" ansi_reset FG=RED style_ansi " ║" echo } function ansi_traces { local optional location sources lines functions declare -n sources=$1 declare -n lines=$2 declare -n functions=$3 optional=false for i in "${!sources[@]}"; do FG=RED style_ansi " ╟─⟶" location=$(printf "%40s" "${sources[$i]}:${lines[$i]}") is_true "$optional" && location=$(FG=GRAY STYLE=ITALIC style_ansi "$location") || location=$(STYLE=ITALIC style_ansi "$location") builtin echo "${location} ${functions[$i]}" optional=true done } function show_error { >&2 printf '\r' >&2 ansi_block_error "$failure_type" "$failure_payload" "$code" >&2 ansi_traces stack_sources stack_lines stack_functions # [[ -p /dev/stdout ]] && kill -TERM $$ } declare -F style_ansi >/dev/null || source "$MIAOU_BASH_DIR/lib/ansi.bash" echo START # echo -n "standard flow:" && show_error echo -n "starting subshell: $(show_error)"