|
|
|
@ -1,29 +1,42 @@ |
|
|
|
#!/usr/bin/env -S -- bash |
|
|
|
|
|
|
|
# CONSTANTS |
|
|
|
|
|
|
|
TMP_ERROR=$(mktemp -t "$(basename $0).XXXXXXXX" --tmpdir=/run/user/$(id -u)) |
|
|
|
|
|
|
|
# FUNCTIONS |
|
|
|
|
|
|
|
function on_exit { |
|
|
|
code=${1:-0} |
|
|
|
echo ON_EXIT2 $code |
|
|
|
[[ -s /tmp/error ]] && cat /tmp/error |
|
|
|
|
|
|
|
stack_lines=("${BASH_LINENO[@]}") |
|
|
|
stack_functions=("${FUNCNAME[@]}") |
|
|
|
stack_sources=("${BASH_SOURCE[@]}") |
|
|
|
|
|
|
|
tmp_error=${2:-/dev/null} |
|
|
|
echo "ERROR #${code} due to:" |
|
|
|
[[ -s $tmp_error ]] && cat $tmp_error && rm $tmp_error |
|
|
|
|
|
|
|
echo "${stack_lines[@]}" |
|
|
|
echo "${stack_functions[@]}" |
|
|
|
echo "${stack_sources[@]}" |
|
|
|
|
|
|
|
trap - ERR TERM INT EXIT |
|
|
|
builtin exit $code |
|
|
|
} |
|
|
|
|
|
|
|
echo BASH_STRICT $@ |
|
|
|
echo ---------- |
|
|
|
# MAIN |
|
|
|
|
|
|
|
command=$1 |
|
|
|
shift |
|
|
|
args=("$@") |
|
|
|
args2=() |
|
|
|
for i in "${args[@]}"; do |
|
|
|
echo ARG: $i |
|
|
|
args2+=("${i@Q}") |
|
|
|
done |
|
|
|
echo "----$command ${args2[@]}------" |
|
|
|
for i in "${args[@]}"; do args2+=("${i@Q}"); done |
|
|
|
# echo "----$command ${args2[@]}------" |
|
|
|
|
|
|
|
set -TEue -o pipefail |
|
|
|
export -f on_exit |
|
|
|
echo PROCESS START |
|
|
|
bash -c "set -TEue -o pipefail; trap 'on_exit \$?' ERR TERM INT EXIT; source $command ${args2[*]}" 3>&1 1>&2 2>&3 | tee /tmp/error |
|
|
|
echo PROCESS END succesfully |
|
|
|
# echo PROCESS START |
|
|
|
bash -c "set -TEue -o pipefail; trap 'on_exit \$? $TMP_ERROR' ERR TERM INT EXIT; source $command ${args2[*]}" 3>&1 1>&2 2>&3 | tee $TMP_ERROR |
|
|
|
# echo PROCESS END succesfully |
|
|
|
|