summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2017-08-22 09:57:53 -0300
committerRenato Botelho <renato@netgate.com>2017-08-22 10:10:03 -0300
commit3ef21629ea7925f9086b680e4721e41620561c32 (patch)
tree1d26ca6ccfc18e8becb3628bf507089ba2dda82c
parent89c32bf21225c20f5237d75cfced3ede733c8104 (diff)
downloadpfsense-3ef21629ea7925f9086b680e4721e41620561c32.zip
pfsense-3ef21629ea7925f9086b680e4721e41620561c32.tar.gz
Teach build_snapshots.sh to read exit code of build.sh
-rwxr-xr-xtools/build_snapshots.sh50
1 files changed, 32 insertions, 18 deletions
diff --git a/tools/build_snapshots.sh b/tools/build_snapshots.sh
index 5bcdf9e..46ef1cf 100755
--- a/tools/build_snapshots.sh
+++ b/tools/build_snapshots.sh
@@ -112,6 +112,23 @@ snapshot_update_status() {
--snapshot-update-status "$*"
}
+exec_and_update_status() {
+ local _cmd="${@}"
+
+ [ -z "${_cmd}" ] \
+ && return 1
+
+ # Ref. https://stackoverflow.com/a/30658405
+ exec 4>&1
+ local _result=$( \
+ { { ${_cmd} 2>&1 3>&-; printf $? 1>&3; } 4>&- \
+ | while read -r LINE; do \
+ snapshot_update_status "${LINE}"; done 1>&4; } 3>&1)
+ exec 4>&-
+
+ return ${_result}
+}
+
git_last_commit() {
[ -z "${NO_RESET}" ] \
&& git -C "${BUILDER_ROOT}" reset --hard >/dev/null 2>&1
@@ -198,25 +215,22 @@ while [ /bin/true ]; do
IFS="
"
if [ -n "${POUDRIERE_SNAPSHOTS}" ]; then
- (${BUILDER_ROOT}/build.sh --update-poudriere-ports 2>&1) \
- | while read -r LINE; do
- snapshot_update_status "${LINE}"
- done
-
- (${BUILDER_ROOT}/build.sh ${NO_UPLOAD} --update-pkg-repo 2>&1) \
- | while read -r LINE; do
- snapshot_update_status "${LINE}"
- done
+ exec_and_update_status \
+ "${BUILDER_ROOT}/build.sh --update-poudriere-ports" \
+ || exit $?
+
+ exec_and_update_status \
+ "${BUILDER_ROOT}/build.sh ${NO_UPLOAD} --update-pkg-repo" \
+ || exit $?
else
- (${BUILDER_ROOT}/build.sh --clean-builder 2>&1) \
- | while read -r LINE; do
- snapshot_update_status "${LINE}"
- done
-
- (${BUILDER_ROOT}/build.sh ${NO_UPLOAD} --flash-size '2g 4g' \
- --snapshots ${NO_IMAGES} 2>&1) | while read -r LINE; do
- snapshot_update_status "${LINE}"
- done
+ exec_and_update_status \
+ "${BUILDER_ROOT}/build.sh --clean-builder" \
+ || exit $?
+
+ exec_and_update_status \
+ "${BUILDER_ROOT}/build.sh ${NO_UPLOAD} --flash-size '2g 4g' " \
+ "--snapshots ${NO_IMAGES}" \
+ || exit $?
fi
IFS=${OIFS}
OpenPOWER on IntegriCloud