-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
79 lines (53 loc) · 1.73 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
PATH := $(CURDIR)/bin:$(PATH)
MODULES := api
DOCKER_COMPOSE := $(or $(DOCKER_COMPOSE),$(DOCKER_COMPOSE),docker-compose)
# lint
.PHONY: dc.lint
dc.lint:
$(DOCKER_COMPOSE) run --rm lint
lint:
golangci-lint run ./...
# generate
define make-dc-generate-rules
.PHONY: dc.$1.generate
dc.$1.generate:
$(DOCKER_COMPOSE) run --rm generate make $1.generate
endef
$(foreach module,$(MODULES),$(eval $(call make-dc-generate-rules,$(module))))
.PHONY: dc.pkg.generate
dc.pkg.generate:
$(DOCKER_COMPOSE) run --rm generate make pkg.generate
.PHONY: dc.generate
dc.generate:
$(DOCKER_COMPOSE) run --rm generate
define make-generate-rules
$1.generate: bin/protoc-gen-go bin/protoc-gen-go-grpc bin/protoc-gen-grpc-gateway
protoc \
-I . \
-I ./pkg/pb \
--proto_path=./modules/$1/proto --go_out=./modules/$1 \
--proto_path=./modules/$1/proto --go-grpc_out=./modules/$1 \
--proto_path=./modules/$1/proto --grpc-gateway_out=./modules/$1 \
./modules/$1/proto/*.proto
go generate ./modules/$1/...
endef
$(foreach module,$(MODULES),$(eval $(call make-generate-rules,$(module))))
pkg.generate: bin/protoc-gen-go bin/protoc-gen-go-grpc bin/protoc-gen-grpc-gateway
go generate ./pkg/...
generate: pkg.generate $(addsuffix .generate,$(MODULES))
bin/protoc-gen-go: go.mod
go build -o $@ google.golang.org/protobuf/cmd/protoc-gen-go
bin/protoc-gen-go-grpc: go.mod
go build -o $@ google.golang.org/grpc/cmd/protoc-gen-go-grpc
bin/protoc-gen-grpc-gateway: go.mod
go build -o $@ github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway
# build
.PHONY: dc.image
dc.image: dc.build
$(DOCKER_COMPOSE) build --force-rm image
.PHONY: dc.build
dc.build:
$(DOCKER_COMPOSE) run --rm build
build:
mkdir -p ./bin/app
go build -o ./bin/app/cmd ./cmd/main.go