|
|
@ -2,10 +2,9 @@ |
|
|
|
|
|
|
|
|
# CONSTANTS |
|
|
# CONSTANTS |
|
|
|
|
|
|
|
|
BASH_BACK_NAME=$(basename "${0}") |
|
|
|
|
|
BASH_BACK_ERROR=$(mktemp -t "${BASH_BACK_NAME}.XXXXXXXX" --tmpdir="/run/user/$(id -u)") |
|
|
|
|
|
|
|
|
BASH_BACK_ERROR=$(mktemp -t "$(basename "$0").XXXXXXXX" --tmpdir="/run/user/$(id -u)") |
|
|
BASH_BACK_DEBUG=${BASH_BACK_DEBUG:-false} |
|
|
BASH_BACK_DEBUG=${BASH_BACK_DEBUG:-false} |
|
|
readonly BASH_BACK_NAME BASH_BACK_ERROR BASH_BACK_DEBUG |
|
|
|
|
|
|
|
|
readonly BASH_BACK_ERROR BASH_BACK_DEBUG |
|
|
|
|
|
|
|
|
# FUNCTIONS |
|
|
# FUNCTIONS |
|
|
|
|
|
|
|
|
@ -131,18 +130,16 @@ function cleanup { |
|
|
# MAIN |
|
|
# MAIN |
|
|
|
|
|
|
|
|
set -TEue -o pipefail |
|
|
set -TEue -o pipefail |
|
|
[[ $# -ne 1 ]] && >&2 echo 'ERROR: script expected!' && builtin exit 1 |
|
|
|
|
|
|
|
|
[[ $# -lt 1 ]] && >&2 echo 'ERROR: script expected!' && builtin exit 1 |
|
|
|
|
|
|
|
|
trap 'on_exit $?' ERR TERM INT EXIT |
|
|
trap 'on_exit $?' ERR TERM INT EXIT |
|
|
trap 'on_return' DEBUG |
|
|
trap 'on_return' DEBUG |
|
|
|
|
|
BASH_ARGV0="$1" && shift # to pretend script runs by itself |
|
|
|
|
|
|
|
|
# magic FD + delayed tee |
|
|
|
|
|
|
|
|
# magic FD + delayed tee => /dev/fd/3 means delayed stderr, /dev/fd/4 remains stderr |
|
|
exec 3> >(tee "$BASH_BACK_ERROR" >/dev/null) 4>/dev/stderr |
|
|
exec 3> >(tee "$BASH_BACK_ERROR" >/dev/null) 4>/dev/stderr |
|
|
|
|
|
|
|
|
# magic $0 |
|
|
|
|
|
BASH_ARGV0="$1" # to pretend script runs by itself |
|
|
|
|
|
|
|
|
|
|
|
$BASH_BACK_DEBUG && >/dev/tty echo '---stdout---' |
|
|
$BASH_BACK_DEBUG && >/dev/tty echo '---stdout---' |
|
|
# shellcheck source=/dev/null |
|
|
# shellcheck source=/dev/null |
|
|
source "$1" 2>&3 |
|
|
|
|
|
|
|
|
source "$BASH_ARGV0" 2>&3 |
|
|
success |
|
|
success |