diff --git a/Makefile b/Makefile index b680f3d06114..17c23d1158c6 100644 --- a/Makefile +++ b/Makefile @@ -379,12 +379,12 @@ golangci_version=v1.51.2 lint: @echo "--> Running linter" @go install github.com/golangci/golangci-lint/cmd/golangci-lint@$(golangci_version) - @sh ./scripts/go-lint-all.sh --timeout=15m + @./scripts/go-lint-all.bash --timeout=15m lint-fix: @echo "--> Running linter" @go install github.com/golangci/golangci-lint/cmd/golangci-lint@$(golangci_version) - @sh ./scripts/go-lint-all.sh --fix + @./scripts/go-lint-all.bash --fix .PHONY: lint lint-fix diff --git a/scripts/go-lint-all.bash b/scripts/go-lint-all.bash new file mode 100755 index 000000000000..b99606844d79 --- /dev/null +++ b/scripts/go-lint-all.bash @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +set -eu -o pipefail + +REPO_ROOT="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )/.." &> /dev/null && pwd )" +export REPO_ROOT + +lint_module() { + local root="$1" + shift + cd "$(dirname "$root")" && + echo "linting $(grep "^module" go.mod) [$(date -Iseconds -u)]" && + golangci-lint run ./... -c "${REPO_ROOT}/.golangci.yml" "$@" +} +export -f lint_module + +find "${REPO_ROOT}" -type f -name go.mod -print0 | + xargs -0 -I{} bash -c 'lint_module "$@"' _ {} "$@" # Prepend go.mod file before command-line args. diff --git a/scripts/go-lint-all.sh b/scripts/go-lint-all.sh deleted file mode 100644 index 4518046191ed..000000000000 --- a/scripts/go-lint-all.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -set -eu - -export pwd=$(pwd) - -for modfile in $(find . -name go.mod); do - echo "linting $(dirname $modfile)" - DIR=$(dirname $modfile) - (cd $DIR; golangci-lint run ./... -c $pwd/.golangci.yml $@) -done