Makefile raw

   1  # Directory to put `go install`ed binaries in.
   2  export GOBIN ?= $(shell pwd)/bin
   3  
   4  GO_FILES := $(shell \
   5  	find . '(' -path '*/.*' -o -path './vendor' ')' -prune \
   6  	-o -name '*.go' -print | cut -b3-)
   7  
   8  .PHONY: build
   9  build:
  10  	go build ./...
  11  
  12  .PHONY: test
  13  test:
  14  	go test -race ./...
  15  
  16  .PHONY: gofmt
  17  gofmt:
  18  	$(eval FMT_LOG := $(shell mktemp -t gofmt.XXXXX))
  19  	@gofmt -e -s -l $(GO_FILES) > $(FMT_LOG) || true
  20  	@[ ! -s "$(FMT_LOG)" ] || (echo "gofmt failed:" | cat - $(FMT_LOG) && false)
  21  
  22  .PHONY: golint
  23  golint:
  24  	@cd tools && go install golang.org/x/lint/golint
  25  	@$(GOBIN)/golint ./...
  26  
  27  .PHONY: staticcheck
  28  staticcheck:
  29  	@cd tools && go install honnef.co/go/tools/cmd/staticcheck
  30  	@$(GOBIN)/staticcheck ./...
  31  
  32  .PHONY: lint
  33  lint: gofmt golint staticcheck
  34  
  35  .PHONY: cover
  36  cover:
  37  	go test -race -coverprofile=cover.out -coverpkg=./... -v ./...
  38  	go tool cover -html=cover.out -o cover.html
  39