1
+ CURDIR =$(shell pwd)
2
+ BINDIR =${CURDIR}/bin
3
+ GOVER =$(shell go version | perl -nle '/(go\d\S+) /; print $$1;')
4
+ SMARTIMPORTS =${BINDIR}/smartimports_${GOVER}
5
+ LINTVER =v1.61.0
6
+ LINTBIN =${BINDIR}/lint_${GOVER}_${LINTVER}
7
+ PACKAGE =validator-api/cmd/app
8
+
9
+ all : format build test lint
10
+
11
+ build : bindir
12
+ GOOS=linux GOARCH=amd64 go build -ldflags " -X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" -o ${BINDIR} /app ${PACKAGE}
13
+
14
+ test :
15
+ GOLANG_PROTOBUF_REGISTRATION_CONFLICT=warn go test ./...
16
+
17
+ run :
18
+ GOLANG_PROTOBUF_REGISTRATION_CONFLICT=warn go run ${PACKAGE}
19
+
20
+ lint : install-lint
21
+ ${LINTBIN} run
22
+
23
+ precommit : format build test lint
24
+ echo " OK"
25
+
26
+ bindir :
27
+ mkdir -p ${BINDIR}
28
+
29
+ format : install-smartimports
30
+ ${SMARTIMPORTS} -exclude internal/mocks
31
+
32
+ install-lint : bindir
33
+ test -f ${LINTBIN} || \
34
+ (GOBIN=${BINDIR} go install github.com/golangci/golangci-lint/cmd/golangci-lint@${LINTVER} && \
35
+ mv ${BINDIR} /golangci-lint ${LINTBIN} )
36
+
37
+ install-smartimports : bindir
38
+ test -f ${SMARTIMPORTS} || \
39
+ (GOBIN=${BINDIR} go install github.com/pav5000/smartimports/cmd/smartimports@latest && \
40
+ mv ${BINDIR} /smartimports ${SMARTIMPORTS} )
41
+
42
+ # Используем bin в текущей директории для установки плагинов protoc
43
+ LOCAL_BIN: =$(CURDIR ) /bin
44
+ bin :
45
+ GOBIN=$(LOCAL_BIN ) go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
46
+ GOBIN=$(LOCAL_BIN ) go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
47
+ GOBIN=$(LOCAL_BIN ) go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest
48
+ GOBIN=$(LOCAL_BIN ) go install github.com/envoyproxy/protoc-gen-validate@latest
49
+
50
+ # Добавляем bin в текущей директории в PATH при запуске protoc
51
+ PROTOC = PATH="$$PATH:$(LOCAL_BIN ) " protoc
52
+
53
+ # Устанавливаем proto описания google/googleapis
54
+ vendor-proto/google/api :
55
+ git clone -b master --single-branch -n --depth=1 --filter=tree:0 \
56
+ https ://github.com/googleapis/googleapis vendor-proto/googleapis &&\
57
+ cd vendor-proto/googleapis &&\
58
+ git sparse-checkout set --no-cone google/api &&\
59
+ git checkout
60
+ mkdir -p vendor-proto/google
61
+ mv vendor-proto/googleapis/google/api vendor-proto/google
62
+ rm -rf vendor-proto/googleapis
63
+
64
+ # Устанавливаем proto описания google/protobuf
65
+ vendor-proto/google/protobuf :
66
+ git clone -b main --single-branch -n --depth=1 --filter=tree:0 \
67
+ https://github.com/protocolbuffers/protobuf vendor-proto/protobuf && \
68
+ cd vendor-proto/protobuf && \
69
+ git sparse-checkout set --no-cone src/google/protobuf && \
70
+ git checkout
71
+ mkdir -p vendor-proto/google
72
+ mv vendor-proto/protobuf/src/google/protobuf vendor-proto/google
73
+ rm -rf vendor-proto/protobuf
74
+
75
+ generate : generate-validator-api
76
+
77
+ generate-validator-api : bin vendor-proto/google/api vendor-proto/google/protobuf
78
+ mkdir -p pkg/validator
79
+ $(PROTOC ) -I api/validator -I vendor-proto \
80
+ --go_out pkg/validator --go_opt paths=source_relative \
81
+ --go-grpc_out pkg/validator --go-grpc_opt paths=source_relative \
82
+ --grpc-gateway_out pkg/validator --grpc-gateway_opt paths=source_relative \
83
+ --validate_out=" lang=go,paths=source_relative:pkg/validator" \
84
+ api/validator/validator.proto
85
+
86
+ build-all :
87
+ GOOS=linux GOARCH=amd64 make build
88
+
89
+ run-all : build-all
90
+ sudo docker compose up --force-recreate --build
91
+ # docker-compose up --force-recreate --build
0 commit comments