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/util.sh"
kube::golang::verify_go_version
# Ensure that we find the binaries we build before anything else.
export GOBIN="${KUBE_OUTPUT_BINPATH}"
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
export GO111MODULE=on
@ -44,29 +57,18 @@ popd >/dev/null
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
if [[ "$#" -gt 0 ]]; then
golangci-lint run "$@" >&2 || res=$?
echo "running ${golangci[*]} $*" >&2
"${golangci[@]}" "$@" >&2 || res=$?
else
golangci-lint run ./... >&2 || res=$?
echo "running ${golangci[*]} ./..." >&2
"${golangci[@]}" ./... >&2 || res=$?
for d in staging/src/k8s.io/*; do
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
golangci-lint --path-prefix "${MODPATH}" run ./... >&2 || res=$?
"${golangci[@]}" --path-prefix "${MODPATH}" ./... >&2 || res=$?
popd >/dev/null
done
fi
@ -77,7 +79,7 @@ if [ "$res" -eq 0 ]; then
else
{
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 your reviewer is okay with it).'
echo 'In general please prefer to fix the error, we have already disabled specific lints'