Some checks are pending
check / check (pull_request) Blocked by required conditions
Add the canonical .golangci.yml (v2 layout, default: all with the standard disable list) and pin golangci-lint v2.12.2 in the Makefile deps target using the v2 module path, replacing the @latest install on the old v1 path. The Dockerfile lint stage already pinned the v2.12.2 alpine image by digest and is unchanged. Fix all issues surfaced by the strict config: - err113: introduce wrapped static sentinel errors - gocognit/funlen/nestif: split ExtractDay, Run, DumpAndCompress, VerifyOutput, and the CLI flag parsing into smaller helpers - noctx: use ExecContext/QueryContext/BeginTx and CommandContext - noinlineerr: replace inline if-err assignments with plain ones - wsl_v5/nlreturn: add required blank lines - lll: wrap long lines and SQL strings - gosec: filepath.Clean on file open/create; bounded uint64 conversion in CheckFreeSpace; named output dir permission constant - mnd: use unix.FADV_* constants and named size constants - revive: add package and exported symbol comments - testpackage/paralleltest: move smoke test to bsdaily_test with t.Parallel() - nonamedreturns: drop non-error named returns The remaining nolint directives (gosec subprocess launches with internal paths, unqueryvet full-row SELECT * copies whose schema is defined by the source database) are each justified inline.
78 lines
1.5 KiB
Makefile
78 lines
1.5 KiB
Makefile
.PHONY: all bootstrap setup check test lint fmt fmt-check build clean deps test-coverage test-integration install release release-snapshot docker hooks
|
|
|
|
# Version number
|
|
VERSION := 0.1.0-dev
|
|
|
|
# Default target
|
|
all: bsdaily
|
|
|
|
# Install all development dependencies.
|
|
bootstrap:
|
|
@script/bootstrap
|
|
|
|
# Prepare a fresh clone: bootstrap plus pre-commit hook.
|
|
setup:
|
|
@script/setup
|
|
|
|
# Combined pre-commit/CI gate: tests, lint, format check.
|
|
check:
|
|
@script/check
|
|
|
|
# Run tests only.
|
|
test:
|
|
@script/test
|
|
|
|
# Check if code is formatted (read-only).
|
|
fmt-check:
|
|
@script/fmt-check
|
|
|
|
# Format code.
|
|
fmt:
|
|
@script/fmt
|
|
|
|
# Run linter only.
|
|
lint:
|
|
@script/lint
|
|
|
|
# Build binary (pure Go; no CGO required since we use modernc.org/sqlite).
|
|
bsdaily: internal/*/*.go cmd/bsdaily/*.go
|
|
CGO_ENABLED=0 go build -o $@ ./cmd/bsdaily
|
|
|
|
# Clean build artifacts.
|
|
clean:
|
|
rm -f bsdaily
|
|
go clean
|
|
|
|
# Install dependencies.
|
|
deps:
|
|
go mod download
|
|
go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.12.2
|
|
|
|
# Run tests with coverage.
|
|
test-coverage:
|
|
go test -v -coverprofile=coverage.out ./...
|
|
go tool cover -html=coverage.out -o coverage.html
|
|
|
|
# Run integration tests.
|
|
test-integration:
|
|
go test -v -tags=integration ./...
|
|
|
|
install: bsdaily
|
|
cp ./bsdaily $(HOME)/bin/
|
|
|
|
# Build and publish release artifacts via goreleaser.
|
|
release:
|
|
goreleaser release --clean
|
|
|
|
# Dry-run a release build without publishing or tagging.
|
|
release-snapshot:
|
|
goreleaser release --clean --snapshot
|
|
|
|
# Build Docker image.
|
|
docker:
|
|
@script/docker
|
|
|
|
# Install pre-commit hook.
|
|
hooks:
|
|
@script/install-precommit
|