sigs.k8s.io/prow@v0.0.0-20240503223140-c5e374dc7eb1/hack/make-rules/verify/file-perms.sh (about) 1 #!/usr/bin/env bash 2 # Copyright 2021 The Kubernetes Authors. 3 # 4 # Licensed under the Apache License, Version 2.0 (the "License"); 5 # you may not use this file except in compliance with the License. 6 # You may obtain a copy of the License at 7 # 8 # http://www.apache.org/licenses/LICENSE-2.0 9 # 10 # Unless required by applicable law or agreed to in writing, software 11 # distributed under the License is distributed on an "AS IS" BASIS, 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 # See the License for the specific language governing permissions and 14 # limitations under the License. 15 16 set -o errexit 17 set -o nounset 18 set -o pipefail 19 20 REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd -P)" 21 cd $REPO_ROOT 22 23 # BSD sed doesn't have --version, and needs + instead of / 24 # GNU sed deprecated and removed + 25 desired_perm="/111" 26 # we're not actually running a search so SC2185 doesn't apply 27 # shellcheck disable=SC2185 28 if ! find --version >/dev/null 2>&1; then 29 desired_perm="+111" 30 fi 31 32 echo "Checking .sh files permission..." 33 # find all files named *.sh (approximate shell script detection ...) 34 # - ignoring .git 35 # - that are not executable by all 36 files=$(find . -type f -name '*.sh' \ 37 -not -perm "${desired_perm}" \ 38 -not \( \ 39 \( \ 40 -path './.git/*' \ 41 -o -path './node_modules/*' \ 42 -o -path './_bin/*' \ 43 \) -prune \ 44 \)) 45 46 if [[ -n "${files}" ]]; then 47 echo "ERROR: the following file(s) cannot be executed:" 48 echo "${files}" 49 echo 50 echo "Please run 'make update-file-perms'" 51 exit 1 52 fi