3 changed files with 65 additions and 42 deletions
-
48install.sh
-
47lib/backtrace.bash
-
12test.sh
@ -0,0 +1,47 @@ |
|||
## CONSTANTS |
|||
|
|||
CURRENT_SOURCE="${BASH_SOURCE[0]}" |
|||
|
|||
## FUNCTIONS |
|||
|
|||
function exit { |
|||
on_exit $1 true |
|||
} |
|||
|
|||
function on_exit { |
|||
local error_code bypass_last_call stack_lines |
|||
error_code=$1 |
|||
|
|||
bypass_last_call=${2:-false} |
|||
echo $CURRENT_SOURCE bypass_last_call=$bypass_last_call |
|||
stack_lines=("${BASH_LINENO[@]}") |
|||
|
|||
# |
|||
# # remove 1 on head list |
|||
# [[ ${#stack_lines[@]} > 0 && ${stack_lines[0]} == 1 ]] && unset stack_lines[0] |
|||
# |
|||
# # remove 0 on tail list |
|||
# [[ ${#stack_lines[@]} > 0 && ${stack_lines[-1]} == 0 ]] && unset stack_lines[-1] |
|||
|
|||
if [[ $error_code > 0 ]]; then |
|||
printf "\nEXIT #${error_code} due to error at line ${stack_lines[*]} : \n-----------------------------------------\n" |
|||
echo "FUNCNAME: ${FUNCNAME[@]}" >&2 # inner outer main |
|||
echo "BASH_SOURCE: ${BASH_SOURCE[@]}" >&2 |
|||
echo "BASH_LINENO: ${BASH_LINENO[@]}" >&2 |
|||
trap - ERR TERM INT EXIT |
|||
builtin exit "${error_code}" |
|||
else |
|||
echo SUCCESS |
|||
fi |
|||
} |
|||
|
|||
function raise_error { |
|||
message=${1:-an undefined error has occured!} |
|||
code=${2:-1} |
|||
echo "error ${code}: ${message}" >&2 |
|||
trap - ERR TERM INT EXIT |
|||
on_exit $code true |
|||
} |
|||
|
|||
set -TEue |
|||
trap 'on_exit $?' ERR TERM INT EXIT |
|||
@ -0,0 +1,12 @@ |
|||
#!/usr/bin/env -S -- bash |
|||
|
|||
## CONSTANTS |
|||
|
|||
BASEDIR=$(dirname $0) |
|||
|
|||
## MAIN |
|||
|
|||
source "$BASEDIR/lib/backtrace.bash" |
|||
echo START test |
|||
grep toto nope |
|||
echo END test |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue