wip fixups

This commit is contained in:
2025-05-10 13:58:31 -05:00
parent e0f726b1da
commit 1c50eb61f5
5 changed files with 164 additions and 48 deletions

View File

@@ -19,19 +19,46 @@ void() { echo "$@" >/dev/null ; }
echo_if_fail() {
local cmd=("$@")
local out="/tmp/.stdout-${RANDOM}"
local err="/tmp/.stderr-${RANDOM}"
"${cmd[@]}" > ${out} 2> ${err}
local out="${TMP_DIR}/.stdout-${RANDOM}"
local err="${TMP_DIR}/.stderr-${RANDOM}"
test -d "${TMP_DIR}" || mkdir -p "${TMP_DIR}"
# set trace to the cmdEvalTrace and open file descriptor
local cmdEvalTrace="${TMP_DIR}/.cmdEvalTrace-${RANDOM}"
exec 5> "${cmdEvalTrace}"
export BASH_XTRACEFD=5
set -x
"${cmd[@]}" >"${out}" 2>"${err}"
local retval=$?
# unset and close file descriptor
set +x
exec 5>&-
# parse out relevant part of the trace
local cmdEvalLines=()
cmd=()
while IFS= read -r line; do
cmdEvalLines+=("${line}")
done < "${cmdEvalTrace}"
local cmdEvalLineNum=${#cmdEvalLines[@]}
for ((i=1; i < cmdEvalLineNum-2; i++)); do
local trimmedCmd="${cmdEvalLines[${i}]}"
trimmedCmd="${trimmedCmd/+ /}"
cmd+=("${trimmedCmd}")
done
if ! test ${retval} -eq 0; then
echo
echo_fail "command [" "${cmd[@]}" "] failed"
echo_fail "command failed:"
printf "%s\n" "${cmd[@]}"
echo_warn "command output:"
tail -n 10 ${out}
tail -n 10 ${err}
tail -n 10 "${out}"
tail -n 10 "${err}"
echo
fi
rm ${out} ${err}
rm "${out}" "${err}" "${cmdEvalTrace}"
return ${retval}
}