diff options
author | Thomas Van Lenten <thomasvl@google.com> | 2016-04-19 17:57:17 -0400 |
---|---|---|
committer | Thomas Van Lenten <thomasvl@google.com> | 2016-04-20 10:14:18 -0400 |
commit | 511f28b73a066f4e7c5b4eeedc5b465e81451fc4 (patch) | |
tree | 05d2cb2dfdb6553553a63b123f4635d5aee50f38 /objectivec/generate_well_known_types.sh | |
parent | 52825bf91a4676dd7745bd37df69a9452fa75434 (diff) | |
download | protobuf-511f28b73a066f4e7c5b4eeedc5b465e81451fc4.tar.gz protobuf-511f28b73a066f4e7c5b4eeedc5b465e81451fc4.tar.bz2 protobuf-511f28b73a066f4e7c5b4eeedc5b465e81451fc4.zip |
ObjC support for failing the build in the generated WKTs are out of date
- Always generated into a temp directory so we can see if things changed.
- Add a flag to control exiting with error when stale vs updating.
This should let the continuous builds error out when ObjC needs to have the
checked in sources updated.
Diffstat (limited to 'objectivec/generate_well_known_types.sh')
-rwxr-xr-x | objectivec/generate_well_known_types.sh | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/objectivec/generate_well_known_types.sh b/objectivec/generate_well_known_types.sh index be9b38a5..73be50ff 100755 --- a/objectivec/generate_well_known_types.sh +++ b/objectivec/generate_well_known_types.sh @@ -12,6 +12,13 @@ set -eu readonly ScriptDir=$(dirname "$(echo $0 | sed -e "s,^\([^/]\),$(pwd)/\1,")") readonly ProtoRootDir="${ScriptDir}/.." +# Flag for continuous integration to check that everything is current. +CHECK_ONLY=0 +if [[ $# -ge 1 && ( "$1" == "--check-only" ) ]] ; then + CHECK_ONLY=1 + shift +fi + pushd "${ProtoRootDir}" > /dev/null if test ! -e src/google/protobuf/stubs/common.h; then @@ -46,4 +53,24 @@ declare -a RUNTIME_PROTO_FILES=( \ google/protobuf/type.proto \ google/protobuf/wrappers.proto) -./protoc --objc_out="${ProtoRootDir}/objectivec" ${RUNTIME_PROTO_FILES[@]} +# Generate to a temp directory to see if they match. +TMP_DIR=$(mktemp -d) +trap "rm -rf ${TMP_DIR}" EXIT +./protoc --objc_out="${TMP_DIR}" ${RUNTIME_PROTO_FILES[@]} +set +e +diff -r "${TMP_DIR}/google" "${ProtoRootDir}/objectivec/google" > /dev/null +if [[ $? -eq 0 ]] ; then + echo "Generated source for WellKnownTypes is current." + exit 0 +fi +set -e + +# If check only mode, error out. +if [[ "${CHECK_ONLY}" == 1 ]] ; then + echo "ERROR: The WKTs need to be regenerated! Run $0" + exit 1 +fi + +# Copy them over. +echo "Copying over updated WellKnownType sources." +cp -r "${TMP_DIR}/google/" "${ProtoRootDir}/objectivec/google/" |