check / check (push) Waiting to run
script/lint now builds only the lint stage of the main Dockerfile (docker build --no-cache --target lint), whose build runs the linter, so a successful build is a clean lint. It is uncached because a cached build runs no linter, and a trap removes the image it tagged; the tag carries the process ID so concurrent runs do not collide. The lint stage calls golangci-lint directly, since make lint now needs Docker. Nothing installs or runs golangci-lint on the host any more: bootstrap and the Makefile drop the install, and script/fmt drops golangci-lint run --fix. Model: opus-5-5
21 lines
741 B
Bash
Executable File
21 lines
741 B
Bash
Executable File
#!/bin/sh
|
|
# script/lint: run golangci-lint, in Docker only. Builds the lint stage of
|
|
# the Dockerfile, whose build runs the linter, so a successful build is a
|
|
# clean lint. --no-cache because a cached build runs no linter. The image
|
|
# is removed afterwards, whatever the outcome.
|
|
set -eu
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
|
|
ROOT="$(cd "$SCRIPT_DIR/.." && pwd -P)"
|
|
|
|
main() {
|
|
cd "$ROOT"
|
|
# Tagged per run, so concurrent runs never remove each other's image.
|
|
image="$("$SCRIPT_DIR/projectname")-lint:$$"
|
|
# A failed build leaves no image, so there is nothing to remove then.
|
|
trap 'docker image rm "$image" >/dev/null 2>&1 || true' EXIT INT TERM
|
|
docker build --no-cache --target lint -t "$image" .
|
|
}
|
|
|
|
main "$@"
|