diff options
author | Renato Botelho <renato@netgate.com> | 2017-08-22 09:57:53 -0300 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2017-08-22 09:58:14 -0300 |
commit | 08ec32cf62fb83a2d051c64e8934534a67506a0f (patch) | |
tree | 4c7f675b61459bfb27c2877f53a5489f17d94d75 | |
parent | 3ed475b11dfcb2999a71195987495ccf05808127 (diff) | |
download | pfsense-08ec32cf62fb83a2d051c64e8934534a67506a0f.zip pfsense-08ec32cf62fb83a2d051c64e8934534a67506a0f.tar.gz |
Teach build_snapshots.sh to read exit code of build.sh
-rwxr-xr-x | tools/build_snapshots.sh | 51 |
1 files changed, 32 insertions, 19 deletions
diff --git a/tools/build_snapshots.sh b/tools/build_snapshots.sh index 2f546bc..78f6b84 100755 --- a/tools/build_snapshots.sh +++ b/tools/build_snapshots.sh @@ -80,6 +80,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 @@ -166,26 +183,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} \ - --snapshots ${NO_IMAGES} "memstick memstickadi memstickserial iso" 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} --snapshots " \ + "${NO_IMAGES} 'memstick memstickadi memstickserial iso'" \ + || exit $? fi IFS=${OIFS} |