|
|
@ -1,8 +1,8 @@ |
|
|
#!/usr/bin/env bash |
|
|
#!/usr/bin/env bash |
|
|
|
|
|
|
|
|
# CONSTANTS |
|
|
# CONSTANTS |
|
|
DEBUG=${BASH_BACK_DEBUG:-false} |
|
|
|
|
|
TMP_ERROR=$(mktemp -t "$(basename $0).XXXXXXXX" --tmpdir=/run/user/$(id -u)) |
|
|
TMP_ERROR=$(mktemp -t "$(basename $0).XXXXXXXX" --tmpdir=/run/user/$(id -u)) |
|
|
|
|
|
DEBUG=${BASH_BACK_DEBUG:-false} |
|
|
SCRIPT=$1 |
|
|
SCRIPT=$1 |
|
|
|
|
|
|
|
|
# FUNCTIONS |
|
|
# FUNCTIONS |
|
|
@ -78,15 +78,6 @@ function on_exit { |
|
|
stack_summary+=("ERROR $code: [$message]") |
|
|
stack_summary+=("ERROR $code: [$message]") |
|
|
fi |
|
|
fi |
|
|
else |
|
|
else |
|
|
# FIXME: should either |
|
|
|
|
|
# 1. grab the whole stacktrace, then print back again |
|
|
|
|
|
# 2. or FLUSH previous stderr |
|
|
|
|
|
# because previous stderr might disappear from the first script when calling subprocess! |
|
|
|
|
|
# |
|
|
|
|
|
# ```bash |
|
|
|
|
|
# >&2 echo some trace in stderr |
|
|
|
|
|
# lib/utility.bash # which contains error |
|
|
|
|
|
# ``` |
|
|
|
|
|
regex="^ .*:[0-9]* .*\$" |
|
|
regex="^ .*:[0-9]* .*\$" |
|
|
[[ "$last_error" =~ $regex ]] || stack_summary+=("ERROR $code:") # <undefined> |
|
|
[[ "$last_error" =~ $regex ]] || stack_summary+=("ERROR $code:") # <undefined> |
|
|
fi |
|
|
fi |
|
|
@ -145,7 +136,7 @@ trap 'on_exit $?' ERR TERM INT EXIT |
|
|
trap 'on_return' DEBUG |
|
|
trap 'on_return' DEBUG |
|
|
|
|
|
|
|
|
# magic FD |
|
|
# magic FD |
|
|
exec 3>$TMP_ERROR 4>/dev/stderr |
|
|
|
|
|
|
|
|
exec 3> >(tee $TMP_ERROR >/dev/null) 4>/dev/stderr |
|
|
$DEBUG && >/dev/tty echo '---stdout---' |
|
|
$DEBUG && >/dev/tty echo '---stdout---' |
|
|
source $SCRIPT 2>&3 |
|
|
source $SCRIPT 2>&3 |
|
|
success |
|
|
success |