diff --git a/hack/make-rules/verify.sh b/hack/make-rules/verify.sh index 1492fb850d..93df92c47e 100755 --- a/hack/make-rules/verify.sh +++ b/hack/make-rules/verify.sh @@ -47,6 +47,7 @@ QUICK_PATTERNS+=( "verify-readonly-packages.sh" "verify-spelling.sh" "verify-staging-client-go.sh" + "verify-staging-meta-files.sh" "verify-test-images.sh" "verify-test-owners.sh" ) diff --git a/hack/verify-staging-meta-files.sh b/hack/verify-staging-meta-files.sh new file mode 100755 index 0000000000..9e0bb68a9e --- /dev/null +++ b/hack/verify-staging-meta-files.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +# Copyright 2018 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/.. + +staging_repos=($(ls "${KUBE_ROOT}/staging/src/k8s.io/")) + +expected_filenames=( + .github/PULL_REQUEST_TEMPLATE.md + code-of-conduct.md + LICENSE + OWNERS + README.md + SECURITY_CONTACTS +) + +exceptions=( + client-go/README.md # client-go provides its own README +) + +RESULT=0 +for repo in ${staging_repos[@]}; do + for filename in ${expected_filenames[@]}; do + if echo " ${exceptions[*]} " | grep -F " ${repo}/${filename} " >/dev/null; then + continue + elif [ ! -f "${KUBE_ROOT}/staging/src/k8s.io/${repo}/${filename}" ]; then + echo "staging/src/k8s.io/${repo}/${filename} does not exist and must be created" + RESULT=1 + fi + done +done + +exit $RESULT