diff options
author | Tim Bielawa <tbielawa@redhat.com> | 2017-04-27 11:56:54 -0400 |
---|---|---|
committer | Tim Bielawa <tbielawa@redhat.com> | 2017-04-28 10:36:11 -0400 |
commit | 7de281c7a8ddfcde6b416e3c4b0b2abb6c6c67a7 (patch) | |
tree | 3624ff1d64dbb390624c0feca32d73789ea39dee /hack/hooks/verify_generated_modules | |
parent | 4a553433d13ebd13499b39a94f5d79968e1d8934 (diff) | |
download | openshift-7de281c7a8ddfcde6b416e3c4b0b2abb6c6c67a7.tar.gz openshift-7de281c7a8ddfcde6b416e3c4b0b2abb6c6c67a7.tar.bz2 openshift-7de281c7a8ddfcde6b416e3c4b0b2abb6c6c67a7.tar.xz openshift-7de281c7a8ddfcde6b416e3c4b0b2abb6c6c67a7.zip |
Contrib: Hook to verify modules match assembled fragments
Diffstat (limited to 'hack/hooks/verify_generated_modules')
-rw-r--r-- | hack/hooks/verify_generated_modules/README.md | 19 | ||||
-rwxr-xr-x | hack/hooks/verify_generated_modules/pre-commit | 55 |
2 files changed, 74 insertions, 0 deletions
diff --git a/hack/hooks/verify_generated_modules/README.md b/hack/hooks/verify_generated_modules/README.md new file mode 100644 index 000000000..093fcf76a --- /dev/null +++ b/hack/hooks/verify_generated_modules/README.md @@ -0,0 +1,19 @@ +# Verify Generated Modules + +Pre-commit hook for verifying that generated library modules match +their EXPECTED content. Library modules are generated from fragments +under the `roles/lib_(openshift|utils)/src/` directories. + +If the attempted commit modified files under the +`roles/lib_(openshift|utils)/` directories this script will run the +`generate.py --verify` command. + +This script will **NOT RUN** if module source fragments are modified +but *not part of the commit*. I.e., you can still make commits if you +modified module fragments AND other files but are *not comitting the +the module fragments*. + +# Setup Instructions + +Standard installation procedure. Copy the hook to the `.git/hooks/` +directory and ensure it is executable. diff --git a/hack/hooks/verify_generated_modules/pre-commit b/hack/hooks/verify_generated_modules/pre-commit new file mode 100755 index 000000000..8a319fd7e --- /dev/null +++ b/hack/hooks/verify_generated_modules/pre-commit @@ -0,0 +1,55 @@ +#!/bin/sh + +###################################################################### +# Pre-commit hook for verifying that generated library modules match +# their EXPECTED content. Library modules are generated from fragments +# under the 'roles/lib_(openshift|utils)/src/' directories. +# +# If the attempted commit modified files under the +# 'roles/lib_(openshift|utils)/' directories this script will run the +# 'generate.py --verify' command. +# +# This script will NOT RUN if module source fragments are modified but +# not part of the commit. I.e., you can still make commits if you +# modified module fragments AND other files but are not comitting the +# the module fragments. + +# Did the commit modify any source module files? +CHANGES=`git diff-index --stat --cached HEAD | grep -E '^ roles/lib_(openshift|utils)/src/(class|doc|ansible|lib)/'` +RET_CODE=$? +ABORT=0 + +if [ "${RET_CODE}" -eq "0" ]; then + # Modifications detected. Run the verification scripts. + + # Which was it? + if $(echo $CHANGES | grep -q 'roles/lib_openshift/'); then + echo "Validating lib_openshift..." + ./roles/lib_openshift/src/generate.py --verify + if [ "${?}" -ne "0" ]; then + ABORT=1 + fi + fi + + if $(echo $CHANGES | grep -q 'roles/lib_utils/'); then + echo "Validating lib_utils..." + ./roles/lib_utils/src/generate.py --verify + if [ "${?}" -ne "0" ]; then + ABORT=1 + fi + fi + + if [ "${ABORT}" -eq "1" ]; then + cat <<EOF + +ERROR: Module verification failed. Generated files do not match fragments. + +Choices to continue: + 1) Run './roles/lib_(openshift|utils)/src/generate.py' from the root of + the repo to regenerate the files + 2) Skip verification with '--no-verify' option to 'git commit' +EOF + fi +fi + +exit $ABORT |