this allows us to maintain the bazel build files until they're removed, but tries to avoid accidentally encouraging their use `make update-all` implementes a non-bazel version of `hack/update-all.sh`, with `hack/update-all.sh` now calling make but also doing the bazel stuff it used to. Signed-off-by: Ashley Davis <ashley.davis@jetstack.io>
84 lines
2.9 KiB
Bash
Executable File
84 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Copyright 2022 The cert-manager 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
|
|
|
|
# NB: This script requires bazel, and is no longer supported since we no longer support bazel
|
|
# We want to add something like this to make, but since this script was never part of any CI
|
|
# pipeline it's not a priority. The script is kept for backwards compatibility for now but may
|
|
# change or be removed in the future.
|
|
|
|
# See https://github.com/cert-manager/cert-manager/pull/3037#issue-440523030
|
|
|
|
# Currently only works on linux/amd64, darwin/amd64.
|
|
|
|
REPO_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../" > /dev/null && pwd )"
|
|
|
|
# See https://staticcheck.io/docs/checks
|
|
CHECKS=(
|
|
"all"
|
|
"-S1*" # Omit code simplifications for now.
|
|
"-ST1*" # Mostly stylistic, redundant w/ golint
|
|
)
|
|
export IFS=','; checks="${CHECKS[*]}"; unset IFS
|
|
|
|
cd "${REPO_ROOT}"
|
|
|
|
all_packages=()
|
|
while IFS='' read -r line; do
|
|
# Prepend './' to get staticcheck to treat these as paths, not packages.
|
|
all_packages+=("./$line")
|
|
done < <( find -L . \
|
|
\( \
|
|
-not \( \
|
|
\( \
|
|
-path ./_\* -o \
|
|
-path ./.\* -o \
|
|
-path ./vendor \
|
|
\) -prune \
|
|
\) \
|
|
\) \
|
|
-type f \
|
|
-name \*.go \
|
|
| sed 's|/[^/]*$||' \
|
|
| sed 's|^./||' \
|
|
| LC_ALL=C sort -u \
|
|
| grep -vE "(third_party|generated|clientset_generated|hack|/_|bazel-)"
|
|
)
|
|
|
|
some_failed=false
|
|
while read -r error; do
|
|
# Ignore compile errors caused by lack of files due to build tags.
|
|
# TODO: Add verification for these directories.
|
|
ignore_no_files="^-: build constraints exclude all Go files in .* \(compile\)"
|
|
if [[ $error =~ $ignore_no_files ]]; then
|
|
continue
|
|
fi
|
|
|
|
some_failed=true
|
|
file="${error%%:*}"
|
|
pkg="$(dirname "$file")"
|
|
echo "$error"
|
|
done < <(bazel run //hack/bin:staticcheck -- -checks "${checks}" "${all_packages[@]}" 2>/dev/null || true)
|
|
|
|
if $some_failed; then
|
|
echo
|
|
echo "Staticcheck failures detected, please fix and re-run this command."
|
|
exit 1
|
|
fi
|