From c810e63ca37643e4433912cc45c6fbce0e47ed2f Mon Sep 17 00:00:00 2001 From: Will McCutchen <will@mccutch.org> Date: Fri, 5 Oct 2018 10:45:37 -0700 Subject: [PATCH] Better Makefile - automatic dependency installation - add linting - test w/ race detector by default --- Makefile | 56 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index 68ea6b2..86efd24 100644 --- a/Makefile +++ b/Makefile @@ -1,36 +1,58 @@ -commit := $(shell git rev-parse --short HEAD) +.PHONY: clean deps image imagepush run test testcover + +COMMIT := $(shell git rev-parse --short HEAD) +GENERATED_ASSETS_PATH := httpbin/assets/assets.go +BIN_DIR := $(GOPATH)/bin +GOLINT := $(BIN_DIR)/golint +GOBINDATA := $(BIN_DIR)/go-bindata +TEST_ARGS := -race build: dist/go-httpbin -dist/go-httpbin: assets cmd/go-httpbin/*.go httpbin/*.go +dist/go-httpbin: $(GENERATED_ASSETS_PATH) cmd/go-httpbin/*.go httpbin/*.go mkdir -p dist go build -o dist/go-httpbin ./cmd/go-httpbin -assets: httpbin/assets/* - go-bindata -o httpbin/assets/assets.go -pkg=assets -prefix=static static +$(GENERATED_ASSETS_PATH): $(GOBINDATA) static/* + $(GOBINDATA) -o $(GENERATED_ASSETS_PATH) -pkg=assets -prefix=static static + # reformat generated code + gofmt -s -w $(GENERATED_ASSETS_PATH) + # dumb hack to make generate code lint correctly + sed -i.bak 's/Html/HTML/g' $(GENERATED_ASSETS_PATH) + sed -i.bak 's/Xml/XML/g' $(GENERATED_ASSETS_PATH) + rm $(GENERATED_ASSETS_PATH).bak -test: assets - go test ./... +test: + go test $(TEST_ARGS) ./... -testcover: assets +testcover: mkdir -p dist - go test -coverprofile=dist/coverage.out github.com/mccutchen/go-httpbin/httpbin + go test $(TEST_ARGS) -coverprofile=dist/coverage.out github.com/mccutchen/go-httpbin/httpbin go tool cover -html=dist/coverage.out +lint: $(GOLINT) + test -z "$$(gofmt -d -s -e .)" || (gofmt -d -s -e . ; exit 1) + $(GOLINT) -set_exit_status ./... + go vet ./... + run: build ./dist/go-httpbin clean: rm -r dist -deps: - go get -u github.com/kevinburke/go-bindata/... - -image: assets cmd/go-httpbin/*.go httpbin/*.go - mkdir -p /tmp/go-httpbin-docker - cp Dockerfile /tmp/go-httpbin-docker - GOOS=linux GOARCH=amd64 go build -o /tmp/go-httpbin-docker/go-httpbin ./cmd/go-httpbin - docker build -t mccutchen/go-httpbin:$(commit) /tmp/go-httpbin-docker +image: $(GENERATED_ASSETS_PATH) cmd/go-httpbin/*.go httpbin/*.go + docker build -t mccutchen/go-httpbin:$(COMMIT) . imagepush: image - docker push mccutchen/go-httpbin:$(commit) + docker push mccutchen/go-httpbin:$(COMMIT) + +assets: $(GENERATED_ASSETS_PATH) + +deps: $(GOLINT) $(GOBINDATA) + +$(GOLINT): + go get -u golang.org/x/lint/golint + +$(GOBINDATA): + go get -u github.com/kevinburke/go-bindata/... -- GitLab