| #!/usr/bin/env bash | |
| set -e | |
| SCRIPTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | |
| source "${SCRIPTDIR}/.validate" | |
| tidy_files=('go.mod' 'go.sum') | |
| vendor_files=("${tidy_files[@]}" 'vendor/') | |
| validate_vendor_tidy() { | |
| # run mod tidy | |
| ./hack/vendor.sh tidy | |
| # check if any files have changed | |
| git diff --quiet HEAD -- "${tidy_files[@]}" | |
| } | |
| validate_vendor_diff() { | |
| mapfile -t changed_files < <(validate_diff --diff-filter=ACMR --name-only -- "${vendor_files[@]}") | |
| if [ -n "${TEST_FORCE_VALIDATE:-}" ] || [ "${#changed_files[@]}" -gt 0 ]; then | |
| # recreate vendor/ | |
| ./hack/vendor.sh vendor | |
| # check if any files have changed | |
| git diff --quiet HEAD -- "${vendor_files[@]}" | |
| else | |
| echo >&2 'INFO: no vendor changes in diff; skipping vendor check.' | |
| fi | |
| } | |
| validate_vendor_license() { | |
| while IFS= read -r module; do | |
| test -d "vendor/$module" || continue | |
| if ! compgen -G "vendor/$module/*" | grep -qEi '/(LICENSE|COPYING)[^/]*$'; then | |
| echo >&2 "WARNING: could not find copyright information for $module" | |
| fi | |
| done < <(awk '/^# /{ print $2 }' vendor/modules.txt) | |
| } | |
| if validate_vendor_tidy && validate_vendor_diff && validate_vendor_license; then | |
| echo >&2 'PASS: Vendoring has been performed correctly!' | |
| else | |
| { | |
| echo 'FAIL: Vendoring was not performed correctly!' | |
| echo | |
| echo 'The following files changed during re-vendor:' | |
| echo | |
| git diff --name-status HEAD -- "${vendor_files[@]}" | |
| echo | |
| echo 'Please revendor with hack/vendor.sh' | |
| echo | |
| git diff --diff-filter=M -- "${vendor_files[@]}" | |
| } >&2 | |
| exit 1 | |
| fi |