-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
59 lines (48 loc) · 1.74 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
BIN_DIR := $(PWD)/bin
PROTOC_GEN_GO_VERSION := v1.36.2
PROTOC_GEN_GO_GRPC_VERSION := v1.5.1
PROTOC_GEN_GO_VTPROTO_VERSION := v0.6.0
$(BIN_DIR):
@mkdir -p $(BIN_DIR)
# Install protoc-gen-go
$(BIN_DIR)/protoc-gen-go: | $(BIN_DIR)
@echo "Installing protoc-gen-go..."
@GOBIN=$(BIN_DIR) go install google.golang.org/protobuf/cmd/protoc-gen-go@$(PROTOC_GEN_GO_VERSION)
# Install protoc-gen-go-grpc
$(BIN_DIR)/protoc-gen-go-grpc: | $(BIN_DIR)
@echo "Installing protoc-gen-go-grpc..."
@GOBIN=$(BIN_DIR) go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@$(PROTOC_GEN_GO_GRPC_VERSION)
# Install protoc-gen-go-vtproto
$(BIN_DIR)/protoc-gen-go-vtproto: | $(BIN_DIR)
@echo "Installing protoc-gen-go-vtproto..."
@GOBIN=$(BIN_DIR) go install github.com/planetscale/vtprotobuf/cmd/protoc-gen-go-vtproto@$(PROTOC_GEN_GO_VTPROTO_VERSION)
# Install all tools
.PHONY: install
install: $(PROTOC_DIR) $(BIN_DIR)/protoc-gen-go $(BIN_DIR)/protoc-gen-go-grpc $(BIN_DIR)/protoc-gen-go-vtproto
@echo "All tools installed in $(BIN_DIR)."
.PHONY: proto
proto:
cd proto && \
protoc \
--go_out=. \
--go_opt paths=source_relative \
--plugin protoc-gen-go="${BIN_DIR}/protoc-gen-go" \
--go-grpc_out=. \
--go-grpc_opt require_unimplemented_servers=false,paths=source_relative \
--plugin protoc-gen-go-grpc="${BIN_DIR}/protoc-gen-go-grpc" \
--go-vtproto_out=. \
--go-vtproto_opt paths=source_relative \
--plugin protoc-gen-go-vtproto="${BIN_DIR}/protoc-gen-go-vtproto" \
--go-vtproto_opt=features=marshal+unmarshal+unmarshal_unsafe+size+pool+equal+clone \
*.proto
proto_clean:
rm -f */*.pb.go
.PHONY: build
build:
go build -v -o bin/woodpecker./cmd
test: build
go test -cover -race ./...
clean:
rm -f $(BIN_DIR)/*
docker:
docker build -t woodpecker:latest .