golangci-lint: show more information about actual invocation

Both env variables and parameters are relevant for users who want to invoke the
command directly or follow how it is used.
This commit is contained in:
Patrick Ohly 2023-02-28 13:30:30 +01:00
parent 12ceec47aa
commit 2d513e1330

View File

@ -26,12 +26,25 @@ KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
source "${KUBE_ROOT}/hack/lib/init.sh" source "${KUBE_ROOT}/hack/lib/init.sh"
source "${KUBE_ROOT}/hack/lib/util.sh" source "${KUBE_ROOT}/hack/lib/util.sh"
kube::golang::verify_go_version
# Ensure that we find the binaries we build before anything else. # Ensure that we find the binaries we build before anything else.
export GOBIN="${KUBE_OUTPUT_BINPATH}" export GOBIN="${KUBE_OUTPUT_BINPATH}"
PATH="${GOBIN}:${PATH}" PATH="${GOBIN}:${PATH}"
invocation=(./hack/verify-golangci-lint.sh "$@")
# The logcheck plugin currently has to be configured via env variables
# (https://github.com/golangci/golangci-lint/issues/1512).
#
# Remember to clean the golangci-lint cache when changing
# the configuration and running this script multiple times,
# otherwise golangci-lint will report stale results:
# _output/local/bin/golangci-lint cache clean
golangci=(env LOGCHECK_CONFIG="${KUBE_ROOT}/hack/logcheck.conf" "${GOBIN}/golangci-lint" run)
golangci_config="${KUBE_ROOT}/.golangci.yaml"
golangci+=(--config="${golangci_config}")
kube::golang::verify_go_version
# Explicitly opt into go modules, even though we're inside a GOPATH directory # Explicitly opt into go modules, even though we're inside a GOPATH directory
export GO111MODULE=on export GO111MODULE=on
@ -44,29 +57,18 @@ popd >/dev/null
cd "${KUBE_ROOT}" cd "${KUBE_ROOT}"
## The config is in ${KUBE_ROOT}/.golangci.yaml where it will be found
## even when golangci-lint is invoked in a sub-directory.
##
## The logcheck plugin currently has to be configured via env variables
## (https://github.com/golangci/golangci-lint/issues/1512).
##
## Remember to clean the golangci-lint cache when changing
## the configuration and running this script multiple times,
## otherwise golangci-lint will report stale results:
## _output/local/bin/golangci-lint cache clean
export LOGCHECK_CONFIG="${KUBE_ROOT}/hack/logcheck.conf"
echo 'running golangci-lint ' >&2
res=0 res=0
if [[ "$#" -gt 0 ]]; then if [[ "$#" -gt 0 ]]; then
golangci-lint run "$@" >&2 || res=$? echo "running ${golangci[*]} $*" >&2
"${golangci[@]}" "$@" >&2 || res=$?
else else
golangci-lint run ./... >&2 || res=$? echo "running ${golangci[*]} ./..." >&2
"${golangci[@]}" ./... >&2 || res=$?
for d in staging/src/k8s.io/*; do for d in staging/src/k8s.io/*; do
MODPATH="staging/src/k8s.io/$(basename "${d}")" MODPATH="staging/src/k8s.io/$(basename "${d}")"
echo "running golangci-lint for ${KUBE_ROOT}/${MODPATH}" echo "running ( cd ${KUBE_ROOT}/${MODPATH}; ${golangci[*]} --path-prefix ${MODPATH} ./... )"
pushd "${KUBE_ROOT}/${MODPATH}" >/dev/null pushd "${KUBE_ROOT}/${MODPATH}" >/dev/null
golangci-lint --path-prefix "${MODPATH}" run ./... >&2 || res=$? "${golangci[@]}" --path-prefix "${MODPATH}" ./... >&2 || res=$?
popd >/dev/null popd >/dev/null
done done
fi fi
@ -77,7 +79,7 @@ if [ "$res" -eq 0 ]; then
else else
{ {
echo echo
echo 'Please review the above warnings. You can test via "./hack/verify-golangci-lint.sh"' echo "Please review the above warnings. You can test via \"${invocation[*]}\""
echo 'If the above warnings do not make sense, you can exempt this warning with a comment' echo 'If the above warnings do not make sense, you can exempt this warning with a comment'
echo ' (if your reviewer is okay with it).' echo ' (if your reviewer is okay with it).'
echo 'In general please prefer to fix the error, we have already disabled specific lints' echo 'In general please prefer to fix the error, we have already disabled specific lints'