1# Targets:
2#
3# all: Builds the code locally after testing
4#
5# fmt: Formats the source files
6# fmt-check: Check if the source files are formated
7# build: Builds the code locally
8# vet: Vets the code
9# lint: Runs lint over the code (you do not need to fix everything)
10# test: Runs the tests
11# cover: Gives you the URL to a nice test coverage report
12#
13# install: Builds, tests and installs the code locally
14
15GOFILES_NOVENDOR = $(shell find . -type f -name '*.go' -not -path "./vendor/*" -not -path "./.git/*")
16
17.PHONY: all fmt build vet lint test cover install
18
19# The first target is always the default action if `make` is called without
20# args we build and install into $GOPATH so that it can just be run
21
22all: fmt vet test install
23
24fmt:
25 @gofmt -s -w ${GOFILES_NOVENDOR}
26
27fmt-check:
28 @([ -z "$(shell gofmt -d $(GOFILES_NOVENDOR) | head)" ]) || (echo "Source is unformatted"; exit 1)
29
30build:
31 @go build
32
33vet:
34 @go vet
35
36lint:
37 @golint *.go
38
39test:
40 @go test -v ./...
41
42cover: COVERAGE_FILE := coverage.out
43cover:
44 @go test -coverprofile=$(COVERAGE_FILE) && \
45 cover -html=$(COVERAGE_FILE) && rm $(COVERAGE_FILE)
46
47install:
48 @go install ./...