Skip to content

Commit

Permalink
ci: lint all modules even if one module fails
Browse files Browse the repository at this point in the history
The previous implementation stopped linting when it encountered its
first module that failed the linter.

Now, use a more idiomatic find|xargs pattern, which will run every
module and exit non-zero if any module fails to lint. This will speed up
the feedback cycle on CI in the event that multiple modules fail
linting.

Also change the script extension to .bash to make it clear to consumers
that this script requires bash, not sh; and make the script executable
so that CI can execute it directly instead of calling sh $script.
  • Loading branch information
mark-rushakoff committed Apr 12, 2023
1 parent e4dbf1b commit 7f87a7a
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 13 deletions.
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
18 changes: 18 additions & 0 deletions scripts/go-lint-all.bash
Original file line number Diff line number Diff line change
@@ -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)" &&
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.
11 changes: 0 additions & 11 deletions scripts/go-lint-all.sh

This file was deleted.

0 comments on commit 7f87a7a

Please sign in to comment.