You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.2 KiB
53 lines
1.2 KiB
#!/usr/bin/env miaou-bash
|
|
|
|
. "$MIAOU_BASH_DIR/lib/ansi.bash"
|
|
|
|
CODE=118
|
|
TYPE='SUBSHELL TERM'
|
|
PAYLOAD='blabla'
|
|
stack_sources=('file.bash' './lib/utility.bash' 'file.bash')
|
|
stack_lines=(18 56 12)
|
|
stack_functions=('f2' 'f1' '<main>')
|
|
|
|
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 "${TYPE}")
|
|
content=$(style_padding "$content")
|
|
detail=$(BG=BLACK style_padding "${PAYLOAD}")
|
|
exit_code=$(FG=WHITE style_ansi " ${CODE}")
|
|
style_block "$content$detail$exit_code"
|
|
|
|
ansi_reset
|
|
}
|
|
|
|
function ansi_traces {
|
|
local optional location
|
|
|
|
optional=false
|
|
for i in "${!stack_sources[@]}"; do
|
|
FG=RED style_ansi "\t╟─⟶"
|
|
location="${stack_sources[$i]}:${stack_lines[$i]}"
|
|
is_true "$optional" &&
|
|
location=$(FG=GRAY STYLE=ITALIC style_ansi "\t$location") || # FIXME: \t should not be required!
|
|
location=$(STYLE=ITALIC style_ansi "$location")
|
|
printf "%40s\t%s\n" "${location}" "${stack_functions[$i]}"
|
|
optional=true
|
|
done
|
|
}
|
|
|
|
ansi_block_error
|
|
ansi_block_continuation
|
|
ansi_traces
|