bring the repo up to org standards
Adopt the standard tooling: a Makefile of thin shims over a full scripts-to-rule-them-all `script/` set, the canonical `.golangci.yml` vendored byte-identical from `sneak/prompts`, docker-only linting via `Dockerfile.lint`, a `Dockerfile` and Gitea workflow that gate every push, and prettier/editorconfig/dockerignore config. `make build` pointed at a `cmd/dcfinfo` that is not in the tree and could never have succeeded; this repo is a library, so `build` is now the compile check over every package. Clear the 57 findings the canonical linter config reports on `pkg/dcf`. Two were real: `findDCFMountPoints` checked a never-assigned `erro` instead of the error from `findAllMountPoints`, discarding it, and `privatePath` was computed twice so the first computation was dead. Mountpoint selection otherwise behaves exactly as before; the defects that survive are filed as issue #6, not fixed here. Rename `DCFStore` to `Store` and `DCFObject` to `Object` (with its `DCFStoreRoot` field to `StoreRoot`), which revive's stutter rule requires and which the `fs.FS` rework in issue #4 will build on. Replace the placeholder test with tests over the exported surface. The filesystem walk stays uncovered: it is reachable only through `GetDCFStores`, which needs real mounted media. README keeps its content, reorganised into the required sections and gaining Entrypoints. (closes #1)
This commit is contained in:
50
Makefile
50
Makefile
@@ -1,14 +1,50 @@
|
||||
default: test
|
||||
.PHONY: bootstrap setup test lint fmt fmt-check check build deps docker cibuild clean hooks
|
||||
|
||||
# Every target is a thin shim over script/. The scripts are the real
|
||||
# entrypoints: they carry the project-specific knowledge (flags,
|
||||
# timeouts, docker-only linting) that a raw `go test` or `golangci-lint`
|
||||
# invocation silently bypasses. Never call the underlying tools
|
||||
# directly.
|
||||
.DEFAULT_GOAL := check
|
||||
|
||||
bootstrap:
|
||||
@script/bootstrap
|
||||
|
||||
setup:
|
||||
@script/setup
|
||||
|
||||
test:
|
||||
go test -v ./...
|
||||
@script/test
|
||||
|
||||
run: build
|
||||
DEBUG=1 ./dcfinfo
|
||||
lint:
|
||||
@script/lint
|
||||
|
||||
fmt:
|
||||
@script/fmt
|
||||
|
||||
fmt-check:
|
||||
@script/fmt-check
|
||||
|
||||
check:
|
||||
@script/check
|
||||
|
||||
# This repo is a library: there is no cmd/ and nothing to link, so
|
||||
# `build` is the compile check over every package.
|
||||
build:
|
||||
go env -w CGO_ENABLED="0"
|
||||
cd cmd/dcfinfo && go build -o ../../dcfinfo
|
||||
go build ./...
|
||||
|
||||
deps:
|
||||
go mod download
|
||||
go mod tidy
|
||||
|
||||
docker:
|
||||
@script/docker
|
||||
|
||||
cibuild:
|
||||
@script/cibuild
|
||||
|
||||
clean:
|
||||
rm -f dcfinfo
|
||||
go clean ./...
|
||||
|
||||
hooks:
|
||||
@script/install-precommit
|
||||
|
||||
Reference in New Issue
Block a user