diff --git a/hooks/pre-commit b/hooks/pre-commit index 486a02808b6ac..2f0eec94577c3 100755 --- a/hooks/pre-commit +++ b/hooks/pre-commit @@ -2,11 +2,10 @@ KUBE_HOOKS_DIR="$(dirname "$(test -L "$0" && echo "$(dirname $0)/$(readlink "$0")" || echo "$0")")" -files_need_gofmt=() -files_need_boilerplate=() -files_need_description=() +exit_code=0 -echo -ne "Checking for files that need gofmt..." +echo -ne "Checking for files that need gofmt... " +files_need_gofmt=() files=($(git diff --cached --name-only --diff-filter ACM | grep "\.go" | grep -v -e "third_party" -e "Godeps")) for file in "${files[@]}"; do # Check for files that fail gofmt. @@ -15,9 +14,20 @@ for file in "${files[@]}"; do files_need_gofmt+=("${file}") fi done -echo "done" -echo -ne "Checking for files that need boilerplate..." +if [[ "${#files_need_gofmt[@]}" -ne 0 ]]; then + echo "ERROR!" + echo "Some files have not been gofmt'd. To fix these errors, " + echo "cut and paste the following:" + echo " gofmt -s -w ${files_need_gofmt[@]}" + exit_code=1 +else + echo "OK" +fi +echo + +echo -ne "Checking for files that need boilerplate... " +files_need_boilerplate=() boiler="${KUBE_HOOKS_DIR}/boilerplate.py" # Check for go files without the required boilerplate. if [[ ${#files[@]} -gt 0 ]]; then @@ -35,9 +45,22 @@ files=($(git diff --cached --name-only --diff-filter ACM | grep "\.py" | grep -v if [[ ${#files} -gt 0 ]]; then files_need_boilerplate+=($("${boiler}" "py" "${files[@]}")) fi -echo "done" -echo -ne "Checking for API descriptions..." +if [[ "${#files_need_boilerplate[@]}" -ne 0 ]]; then + echo "ERROR!" + echo "Some files are missing the required boilerplate header" + echo "from hooks/boilerplate.txt:" + for file in "${files_need_boilerplate[@]}"; do + echo " ${file}" + done + exit_code=1 +else + echo "OK" +fi +echo + +echo -ne "Checking for API descriptions... " +files_need_description=() # Check API schema definitions for field descriptions for file in $(git diff --cached --name-only --diff-filter ACM | egrep "pkg/api/v.[^/]*/types\.go" | grep -v "third_party"); do # Check for files with fields without description tags @@ -46,48 +69,30 @@ for file in $(git diff --cached --name-only --diff-filter ACM | egrep "pkg/api/v files_need_description+=("${file}") fi done -echo "done" - -ret=0 -if [[ "${#files_need_gofmt[@]}" -ne 0 ]]; then - echo - echo "# *** ERROR: *** Some files have not been gofmt'd. To fix these" - echo "# errors, run gofmt -s -w , or cut and paste the following:" - echo "# gofmt -s -w ${files_need_gofmt[@]}" - echo - ret=1 -fi - -if [[ "${#files_need_boilerplate[@]}" -ne 0 ]]; then - echo - echo "# *** ERROR: *** Some files are missing the required boilerplate" - echo "# header from hooks/boilerplate.txt:" - for file in "${files_need_boilerplate[@]}"; do - echo "# ${file}" - done - echo - ret=1 -fi if [[ "${#files_need_description[@]}" -ne 0 ]]; then - echo - echo "# *** ERROR: *** Some API files are missing the required field descriptions" - echo "# Add description tags to all non-inline fields in the following files:" + echo "ERROR!" + echo "Some API files are missing the required field descriptions." + echo "Add description tags to all non-inline fields in the following files:" for file in "${files_need_description[@]}"; do - echo "# ${file}" + echo " ${file}" done - echo - ret=1 + exit_code=1 +else + echo "OK" fi +echo -echo -ne "Checking for docs that need updating..." +echo -ne "Checking for docs that need updating... " if ! hack/verify-gendocs.sh > /dev/null; then - echo - echo "# *** ERROR: *** docs are out of sync between cli and markdown" - echo "# run hack/run-gendocs.sh > docs/kubectl.md to regenerate" - echo - ret=1 + echo "ERROR!" + echo "Some docs are out of sync between CLI and markdown." + echo "To regenerate docs, run:" + echo " hack/run-gendocs.sh > docs/kubectl.md" + exit_code=1 +else + echo "OK" fi -echo "done" +echo -exit $ret +exit $exit_code