forked from docker-archive/deploykit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
105 lines (81 loc) · 2.61 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# Set an output prefix, which is the local directory if not specified
PREFIX?=$(shell pwd -L)
# Used to populate version variable in main package.
VERSION=$(shell git describe --match 'v[0-9]*' --dirty='.m' --always)
REVISION=$(shell git rev-list -1 HEAD)
# Allow turning off function inlining and variable registerization
ifeq (${DISABLE_OPTIMIZATION},true)
GO_GCFLAGS=-gcflags "-N -l"
VERSION:="$(VERSION)-noopt"
endif
.PHONY: clean all fmt vet lint build test vendor-sync containers
.DEFAULT: all
all: clean fmt vet lint build test infrakit
ci: fmt vet lint vendor-sync vendor-check coverage
AUTHORS: .mailmap .git/HEAD
git log --format='%aN <%aE>' | sort -fu > $@
# Package list
PKGS_AND_MOCKS := $(shell go list ./... | grep -v /vendor)
PKGS := $(shell echo $(PKGS_AND_MOCKS) | tr ' ' '\n' | grep -v /mock$)
BINARIES := $(shell go list ./cmd/... ./example/... | grep -v /vendor)
vet:
@echo "+ $@"
@go vet $(PKGS)
fmt:
@echo "+ $@"
@test -z "$$(gofmt -s -l . 2>&1 | grep -v ^vendor/ | tee /dev/stderr)" || \
(echo >&2 "+ please format Go code with 'gofmt -s', or use 'make fmt-save'" && false)
fmt-save:
@echo "+ $@"
@gofmt -s -l . 2>&1 | grep -v ^vendor/ | xargs gofmt -s -l -w
lint:
@echo "+ $@"
$(if $(shell which golint || echo ''), , \
$(error Please install golint: `go get -u github.com/golang/lint/golint`))
@test -z "$$(golint ./... 2>&1 | grep -v ^vendor/ | grep -v mock/ | tee /dev/stderr)"
build: vendor-sync
@echo "+ $@"
@go build ${GO_LDFLAGS} $(PKGS)
clean:
@echo "+ $@"
-mkdir -p ./infrakit
-rm -rf ./infrakit/*
infrakit: clean build
@echo "+ $@"
@for bin in $(BINARIES); do \
go build -o ./infrakit/$$( echo $${bin} | awk -F '/' '{print $$NF}') \
-ldflags "-X main.Version=$(VERSION) -X main.Revision=$(REVISION)" $${bin} || exit 1; \
done
install: vendor-sync
@echo "+ $@"
@go install ${GO_LDFLAGS} $(PKGS)
generate:
@echo "+ $@"
@go generate -x $(PKGS_AND_MOCKS)
test: vendor-sync
@echo "+ $@"
@go test -test.short -race -v $(PKGS)
coverage: vendor-sync
@echo "+ $@"
@for pkg in $(PKGS); do \
go test -test.short -race -coverprofile="../../../$$pkg/coverage.txt" $${pkg} || exit 1; \
done
test-full: vendor-sync
@echo "+ $@"
@go test -race $(PKGS)
# govendor helpers
check-govendor:
$(if $(shell which govendor || echo ''), , \
$(error Please install govendor: go get github.com/kardianos/govendor))
vendor-sync: check-govendor
@echo "+ $@"
@govendor sync
vendor-save: check-govendor
@echo "+ $@"
@govendor add +external
vendor-check:
@echo "+ $@"
@test -z "$$(govendor status | tee /dev/stderr)"
containers:
@echo "+ $@"
cd swarm/swarmboot/container && make container