All checks were successful
check / check (push) Successful in 1m13s
backend/.golangci.yml declared version: "2" on line 1 but used the golangci-lint v1 schema below it: a top-level linters-settings key and an issues.exclude-use-default key that does not exist in v2. Under v2 that config does not validate, so every threshold in it was inert -- lll fell back to its 120-column default rather than the intended 88, and funlen, cyclop and dupl were not applied at all. The `0 issues.` result the repo has been relying on was therefore meaningless. Replace it with the org-standard file verbatim (sha256 021cc83f4e6fc7c31b95b34b846723dfcf20b66b7baeea1dc40406e643346bcb) and repoint the golangci-lint pin in Dockerfile.backend from v2.7.2 to the org-standard v2.12.2. Guard against the config drifting from the standard again by asserting its sha256 as the first step of the backend lint target. The check is a local hash comparison against a constant in the Makefile: it needs no network, fetches nothing, and adds no unpinned external reference to the build path. It also catches a strictly larger class of breakage than schema validation would, since a schema-valid but non-canonical config is exactly how this file got into its broken state. With the config actually loading, lll reports server.go:65 at 93 columns. Fix it, plus the two other over-long lines called out on the issue (server.go:97 at 81 and reportbuf.go:166 at 88) which are inside the 88-column lint limit but over the 77-column hard wrap in the Go styleguide. All three were long //nolint justifications on the code line; move the justification into a preceding comment block and leave a short directive behind. No suppression is added or widened, and .golangci.yml is not touched after the copy. Drop the //nolint:wsl in server.go entirely rather than relocating it. The standard config disables wsl, so the directive suppressed nothing; removing it still yields `0 issues.` Verified: `cd backend && make check` reports `0 issues.` and passes with the network unavailable, root `make check` passes, and `docker build -f Dockerfile.backend .` builds green against the pinned v2.12.2.
72 lines
2.0 KiB
Makefile
72 lines
2.0 KiB
Makefile
UNAME_S := $(shell uname -s)
|
|
VERSION := $(shell git describe --always --dirty)
|
|
BUILDARCH := $(shell uname -m)
|
|
BINARY := netwatch-server
|
|
|
|
GOLDFLAGS += -X main.Version=$(VERSION)
|
|
GOLDFLAGS += -X main.Buildarch=$(BUILDARCH)
|
|
|
|
ifeq ($(UNAME_S),Darwin)
|
|
GOFLAGS := -ldflags "$(GOLDFLAGS)"
|
|
SHA256SUM := shasum -a 256
|
|
else
|
|
GOFLAGS = -ldflags "-linkmode external -extldflags -static $(GOLDFLAGS)"
|
|
SHA256SUM := sha256sum
|
|
endif
|
|
|
|
# .golangci.yml is standardized org-wide and must never be edited here
|
|
# (REPO_POLICIES.md). Its last silent drift replaced the v2 schema with
|
|
# v1 keys, which left every threshold in the file inert while the build
|
|
# stayed green. The lint target therefore asserts the file still matches
|
|
# the canonical copy byte for byte. The check is a local hash comparison:
|
|
# no network, no remote schema, nothing unpinned in the build path.
|
|
GOLANGCI_CONFIG_SHA256 := 021cc83f4e6fc7c31b95b34b846723dfcf20b66b7baeea1dc40406e643346bcb
|
|
|
|
.PHONY: all build test lint fmt fmt-check check docker hooks run clean
|
|
|
|
all: build
|
|
|
|
build: ./$(BINARY)
|
|
|
|
./$(BINARY): $(shell find . -name '*.go' -type f) go.mod go.sum
|
|
go build -o $@ $(GOFLAGS) ./cmd/netwatch-server/
|
|
|
|
test:
|
|
timeout 30 go test ./...
|
|
|
|
lint:
|
|
@actual=$$($(SHA256SUM) .golangci.yml | cut -d' ' -f1); \
|
|
if [ "$$actual" != "$(GOLANGCI_CONFIG_SHA256)" ]; then \
|
|
echo ".golangci.yml has drifted from the org standard."; \
|
|
echo " expected $(GOLANGCI_CONFIG_SHA256)"; \
|
|
echo " actual $$actual"; \
|
|
echo "Restore it verbatim from sneak/prompts; do not edit it."; \
|
|
exit 1; \
|
|
fi
|
|
golangci-lint run ./...
|
|
|
|
fmt:
|
|
go fmt ./...
|
|
|
|
fmt-check:
|
|
@test -z "$$(gofmt -l .)" || \
|
|
(echo "Files not formatted:"; gofmt -l .; exit 1)
|
|
|
|
check: test lint fmt-check
|
|
|
|
docker:
|
|
timeout 300 docker build -t netwatch-server -f ../Dockerfile.backend ..
|
|
|
|
hooks:
|
|
@printf '#!/bin/sh\ncd backend && make check\n' > \
|
|
$$(git rev-parse --show-toplevel)/.git/hooks/pre-commit
|
|
@chmod +x \
|
|
$$(git rev-parse --show-toplevel)/.git/hooks/pre-commit
|
|
@echo "Pre-commit hook installed"
|
|
|
|
run: build
|
|
./$(BINARY)
|
|
|
|
clean:
|
|
rm -f ./$(BINARY)
|