moby/hack/validate/vendor

56 lines
1.5 KiB
Text
Raw Normal View History

#!/usr/bin/env bash
set -e
SCRIPTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${SCRIPTDIR}/.validate"
tidy_files=('vendor.mod' 'vendor.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