From e3604e558f6bd4dccc96b9bd071223fd8506888f Mon Sep 17 00:00:00 2001 From: Abhinav Gupta Date: Sun, 18 Dec 2022 23:01:59 -0800 Subject: Makefile: Simplify (#62) This simplifies the Makefile significantly, borrowing patterns we've used in other projects. Namely: - Set GOBIN to a bin subdirectory so that we can `go install` dependencies into it. - Use a shared TEST_FLAGS for `make test` and `make cover`. Without this, we're not running with data race detection in CI. - Build lint step out of separate golint and staticcheck steps. In the future, a gofmt step may also be added. - Move tools dependencies into an unpublished subpackage. Note: I didn't mess with the 'clean' and 'run' targets at the bottom of the file even though they're not necessary to avoid a merge conflict with #60. --- Makefile | 49 ++++++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 23 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index b938911..4b9b0cd 100644 --- a/Makefile +++ b/Makefile @@ -1,39 +1,42 @@ -GOLINT = go run golang.org/x/lint/golint -STATICCHECK = go run honnef.co/go/tools/cmd/staticcheck +export GOBIN = $(shell pwd)/bin +export PATH := $(GOBIN):$(PATH) -.PHONY: all -all: test +GOLINT = bin/golint +STATICCHECK = bin/staticcheck -.PHONY: build -build: - go build +TEST_FLAGS ?= -race -.PHONY: install -install: - go install . +.PHONY: all +all: lint install test .PHONY: lint -lint: - $(GOLINT) ./... - -.PHONY: vet -vet: - go vet ./... +lint: golint staticcheck .PHONY: staticcheck -staticcheck: - $(STATICCHECK) -tests=false ./... +staticcheck: $(STATICCHECK) + $(STATICCHECK) ./... -.PHONY: pretest -pretest: lint vet staticcheck +$(STATICCHECK): tools/go.mod + cd tools && go install honnef.co/go/tools/cmd/staticcheck + +.PHONY: golint +golint: $(GOLINT) + $(GOLINT) ./... + +$(GOLINT): tools/go.mod + cd tools && go install golang.org/x/lint/golint + +.PHONY: install +install: + go install . .PHONY: test -test: pretest - go test -race ./... +test: + go test $(TEST_FLAGS) ./... .PHONY: cover cover: - go test -coverprofile=cover.out -covermode=atomic -coverpkg=./... ./... + go test $(TEST_FLAGS) -coverprofile=cover.out -covermode=atomic -coverpkg=./... ./... go tool cover -html=cover.out -o cover.html .PHONY: clean -- cgit v1.2.3