Makefile

 1.DEFAULT_GOAL = all
 2
 3numcpus  := $(shell cat /proc/cpuinfo | grep '^processor\s*:' | wc -l)
 4version  := $(shell git rev-list --count HEAD).$(shell git rev-parse --short HEAD)
 5
 6name     := fake
 7package  := github.com/icrowley/$(name)
 8
 9.PHONY: all
10all:: dependencies
11
12.PHONY: tools
13tools::
14	@if [ ! -e "$(GOPATH)"/bin/glide ]; then go get github.com/Masterminds/glide; fi
15	@if [ ! -e "$(GOPATH)"/bin/godef ]; then go get github.com/rogpeppe/godef; fi
16	@if [ ! -e "$(GOPATH)"/bin/gocode ]; then go get github.com/nsf/gocode; fi
17	@if [ ! -e "$(GOPATH)"/bin/gometalinter ]; then go get github.com/alecthomas/gometalinter && gometalinter --install; fi
18	@if [ ! -e "$(GOPATH)"/src/github.com/stretchr/testify/assert ]; then go get github.com/stretchr/testify/assert; fi
19
20.PHONY: dependencies
21dependencies:: tools
22	glide install
23
24.PHONY: clean
25clean:: tools
26	glide cache-clear
27
28.PHONY: test
29test:: dependencies
30	go test -v \
31           $(shell glide novendor)
32
33.PHONY: bench
34bench:: dependencies
35	go test        \
36           -bench=. -v \
37           $(shell glide novendor)
38
39.PHONY: lint
40lint:: dependencies
41	go vet $(shell glide novendor)
42	gometalinter                     \
43		--deadline=5m            \
44		--concurrency=$(numcpus) \
45		$(shell glide novendor)
46
47.PHONY: check
48check:: lint test