-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
117 lines (93 loc) · 3.05 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
106
107
108
109
110
111
112
113
114
115
116
117
OUT_DIR := ./build
OUT := $(OUT_DIR)/gstore
MAIN_PKG := ./cmd/gstore
GOBIN := $(shell go env GOPATH)/bin
MOCKGEN_NAME := mockgen
MOCKGEN_VERSION := v1.4.4
MIGRATE_NAME := migrate
MIGRATE_VERSION := v4.14.1
default: build
.PHONY: build
build:
CGO_ENABLED=0 go build -mod=vendor -o $(OUT) $(MAIN_PKG)
.PHONY: linux
linux: export GOOS := linux
linux: export GOARCH := amd64
linux: LINUX_OUT := $(OUT)-$(GOOS)-$(GOARCH)
linux:
@echo BUILDING $(LINUX_OUT)
CGO_ENABLED=0 go build -mod=vendor -o $(LINUX_OUT) $(MAIN_PKG)
@echo DONE
.PHONY: image
image:
docker build -t gstore-local -f scripts/Dockerfile .
.PHONY: clean
clean:
rm -rf $(OUT_DIR)
.PHONY: test
test: GO_TEST_FLAGS := -race
test:
go test -mod=vendor -v $(GO_TEST_FLAGS) $(GO_TEST_TAGS) ./...
.PHONY: fulltest
fulltest: GO_TEST_TAGS := -tags=integration
fulltest: test
.PHONY: vendor
vendor:
go mod tidy
go mod vendor
.PHONY: generate
generate: check-all
go generate -mod=vendor -x ./...
.PHONY: install-mockgen
install-mockgen: MOCKGEN_INSTALL_PATH := $(GOBIN)/$(MOCKGEN_NAME)
install-mockgen:
@echo INSTALLING $(MOCKGEN_INSTALL_PATH) $(MOCKGEN_NAME)
# we need to change dir to use go modules without updating repo deps
cd $(TMPDIR) && GO111MODULE=on go get github.com/golang/mock/mockgen@$(MOCKGEN_VERSION)
@echo DONE
.PHONY: install-migrate
install-migrate:
@echo INSTALLING $(MIGRATE_NAME) for MacOS
@echo 'Check https://github.com/golang-migrate/migrate/blob/master/cmd/migrate/README.md for details'
brew install golang-migrate
@echo DONE
.PHONY: check-mockgen-version
check-mockgen-version: ACTUAL_MOCKGEN_VERSION := $(shell $(MOCKGEN_NAME) --version 2>/dev/null)
check-mockgen-version:
[ -z $(ACTUAL_MOCKGEN_VERSION) ] && \
echo 'Mockgen is not installed, run `make install-mockgen`' && \
exit 1 || true
if [ $(ACTUAL_MOCKGEN_VERSION) != $(MOCKGEN_VERSION) ] ; then \
echo $(MOCKGEN_NAME) is version $(ACTUAL_MOCKGEN_VERSION), want $(MOCKGEN_VERSION) ; \
echo 'Make sure $$GOBIN has precedence in $$PATH and' \
'run `make install-mockgen` to install the correct version' ; \
exit 1 ; \
fi
.PHONY: check-migrate-version
check-migrate-version: ACTUAL_MIGRATE_VERSION := $(shell $(MIGRATE_NAME) -version 2>&1)
check-migrate-version:
[ -z $(ACTUAL_MIGRATE_VERSION) ] && \
echo 'Migrate is not installed, run `make install-migrate`' && \
exit 1 || true
if [ $(ACTUAL_MIGRATE_VERSION) != $(MIGRATE_VERSION) ] ; then \
echo $(MIGRATE_NAME) is version $(ACTUAL_MIGRATE_VERSION), want $(MIGRATE_VERSION) ; \
echo 'Make sure $$GOBIN has precedence in $$PATH and' \
'run `make install-migrate` to install the correct version' ; \
exit 1 ; \
fi
.PHONY: check-all
check-all: check-mockgen-version check-migrate-version
.PHONY: install-all
install-all: install-mockgen install-migrate
.PHONY: new-migration
new-migration:
migrate create -ext sql -dir scripts/migrations/postgres -seq $(NAME)
.PHONY: dev-start
dev-start:
docker-compose -f scripts/docker-compose.yml up -d gstore-db
.PHONY: dev-stop
dev-stop:
docker-compose -f scripts/docker-compose.yml down
.PHONY: run
run:
go run cmd/gstore/main.go