Revert "Revert "Properly fail/trap in eval_run_d"" and fix PIPESTATUS

This reverts commit f07e33a2e9.

This change reverts the revert while fixing the underlying issue --
$PIPESTATUS needed to be encapsulated in ${}s

Change-Id: I1df06ffa7aecf4ea4b8e187dc756e9fc779786bc
This commit is contained in:
Ben Kero 2016-05-16 16:25:12 -07:00
parent 99ddd58a15
commit 9a00bf144f

View File

@ -113,12 +113,15 @@ function check_element () {
# $1 is the hook to run # $1 is the hook to run
# $2 is the regex to look for # $2 is the regex to look for
function eval_run_d () { function eval_run_d () {
local TEMP=`run_d $1` local run_output=$(mktemp)
echo "$TEMP" trap "rm -f $run_output; check_break after-error ${break_cmd:-bash}" ERR
if [ `echo "$TEMP" | grep -s "$2"` ]; then run_d $1 $run_output
TEMP=`echo "$TEMP" | grep "$2"` if grep -q "$2" $run_output; then
eval "$TEMP" local temp=$(grep "$2" $run_output)
fi eval "$temp"
fi
rm $run_output
trap - ERR
} }
# Usage: map_nbd $image # Usage: map_nbd $image
@ -194,9 +197,16 @@ function cleanup_image_dir () {
# Run a directory of hooks outside the target (that is, no chrooting). # Run a directory of hooks outside the target (that is, no chrooting).
function run_d() { function run_d() {
check_element check_element
check_break before-$1 bash check_break before-$1 ${break_cmd:-bash}
if [ -d ${TMP_HOOKS_PATH}/$1.d ] ; then if [ -d ${TMP_HOOKS_PATH}/$1.d ] ; then
dib-run-parts ${TMP_HOOKS_PATH}/$1.d if [ -n "$2" ]; then
dib-run-parts ${TMP_HOOKS_PATH}/$1.d | tee $2
if [[ ${PIPESTATUS[0]} != 0 ]]; then
return 1
fi
else
dib-run-parts ${TMP_HOOKS_PATH}/$1.d
fi
fi fi
check_break after-$1 bash check_break after-$1 bash
} }