mirror of
https://github.com/levogevo/ffmpeg-builder.git
synced 2026-01-15 19:06:17 +00:00
wip fixups
This commit is contained in:
@@ -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}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user