|
|
@ -2,20 +2,18 @@ |
|
|
|
|
|
|
|
|
CURRENT_SOURCE="${BASH_SOURCE[0]}" |
|
|
CURRENT_SOURCE="${BASH_SOURCE[0]}" |
|
|
|
|
|
|
|
|
|
|
|
# TODO: read and understand the catch function |
|
|
|
|
|
# https://stackoverflow.com/a/59592881/5018486 |
|
|
|
|
|
|
|
|
## FUNCTIONS |
|
|
## FUNCTIONS |
|
|
|
|
|
|
|
|
function exit { |
|
|
function exit { |
|
|
on_exit $1 true |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function on_exit { |
|
|
|
|
|
local error_code bypass_last_call stack_lines |
|
|
|
|
|
|
|
|
local error_code stack_lines stack_functions stack_sources |
|
|
error_code=$1 |
|
|
error_code=$1 |
|
|
|
|
|
|
|
|
bypass_last_call=${2:-false} |
|
|
|
|
|
echo $CURRENT_SOURCE bypass_last_call=$bypass_last_call |
|
|
|
|
|
stack_lines=("${BASH_LINENO[@]}") |
|
|
stack_lines=("${BASH_LINENO[@]}") |
|
|
|
|
|
|
|
|
|
|
|
stack_functions=("${FUNCNAME[@]}") |
|
|
|
|
|
stack_sources=("${BASH_SOURCE[@]}") |
|
|
# |
|
|
# |
|
|
# # remove 1 on head list |
|
|
# # remove 1 on head list |
|
|
# [[ ${#stack_lines[@]} > 0 && ${stack_lines[0]} == 1 ]] && unset stack_lines[0] |
|
|
# [[ ${#stack_lines[@]} > 0 && ${stack_lines[0]} == 1 ]] && unset stack_lines[0] |
|
|
@ -40,8 +38,17 @@ function raise_error { |
|
|
code=${2:-1} |
|
|
code=${2:-1} |
|
|
echo "error ${code}: ${message}" >&2 |
|
|
echo "error ${code}: ${message}" >&2 |
|
|
trap - ERR TERM INT EXIT |
|
|
trap - ERR TERM INT EXIT |
|
|
on_exit $code true |
|
|
|
|
|
|
|
|
exit $code |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
_BACKTRACE=${_BACKTRACE:-false} |
|
|
|
|
|
# echo "_BACKTRACE=${_BACKTRACE}" |
|
|
|
|
|
${_BACKTRACE} && return |
|
|
|
|
|
|
|
|
set -TEue |
|
|
set -TEue |
|
|
trap 'on_exit $?' ERR TERM INT EXIT |
|
|
|
|
|
|
|
|
trap 'exit $?' ERR TERM INT EXIT |
|
|
|
|
|
# echo "current: ${BASH_SOURCE[-1]}" |
|
|
|
|
|
# echo "ARGV : $@" |
|
|
|
|
|
export _BACKTRACE=true |
|
|
|
|
|
# exec ${BASH_SOURCE[-1]} $* |
|
|
|
|
|
eval $(<${BASH_SOURCE[-1]}) $* |