mirror of
https://github.com/3ybactuk/marketplace-go-service-project.git
synced 2025-10-30 14:03:45 +03:00
[hw-3] loms service
This commit is contained in:
@@ -1,4 +1,66 @@
|
||||
CURDIR=$(shell pwd)
|
||||
BINDIR=${CURDIR}/bin
|
||||
|
||||
.PHONY: .bin-deps
|
||||
.bin-deps:
|
||||
$(info Installing binary dependencies...)
|
||||
|
||||
GOBIN=$(BINDIR) go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 && \
|
||||
GOBIN=$(BINDIR) go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0 && \
|
||||
GOBIN=$(BINDIR) go install github.com/envoyproxy/protoc-gen-validate@v1.0.4 && \
|
||||
GOBIN=$(BINDIR) go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.19.1 && \
|
||||
GOBIN=$(BINDIR) go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.19.1 && \
|
||||
GOBIN=$(BINDIR) go install github.com/go-swagger/go-swagger/cmd/swagger@v0.30.5
|
||||
|
||||
# Устанавливаем proto описания google/protobuf
|
||||
vendor-proto/google/protobuf:
|
||||
git clone -b main --single-branch -n --depth=1 \
|
||||
https://github.com/protocolbuffers/protobuf vendor-proto/protobuf &&\
|
||||
cd vendor-proto/protobuf &&\
|
||||
git sparse-checkout set --no-cone src/google/protobuf &&\
|
||||
git checkout
|
||||
mkdir -p vendor-proto/google
|
||||
mv vendor-proto/protobuf/src/google/protobuf vendor-proto/google
|
||||
rm -rf vendor-proto/protobuf
|
||||
|
||||
# Устанавливаем proto описания validate
|
||||
vendor-proto/validate:
|
||||
git clone -b main --single-branch --depth=2 \
|
||||
https://github.com/bufbuild/protoc-gen-validate vendor-proto/tmp && \
|
||||
cd vendor-proto/tmp && \
|
||||
git sparse-checkout set --no-cone validate &&\
|
||||
git checkout
|
||||
mkdir -p vendor-proto/validate
|
||||
mv vendor-proto/tmp/validate vendor-proto/
|
||||
rm -rf vendor-proto/tmp
|
||||
|
||||
# Устанавливаем proto описания google/googleapis
|
||||
vendor-proto/google/api:
|
||||
git clone -b master --single-branch -n --depth=1 \
|
||||
https://github.com/googleapis/googleapis vendor-proto/googleapis && \
|
||||
cd vendor-proto/googleapis && \
|
||||
git sparse-checkout set --no-cone google/api && \
|
||||
git checkout
|
||||
mkdir -p vendor-proto/google
|
||||
mv vendor-proto/googleapis/google/api vendor-proto/google
|
||||
rm -rf vendor-proto/googleapis
|
||||
|
||||
# Устанавливаем proto описания protoc-gen-openapiv2/options
|
||||
vendor-proto/protoc-gen-openapiv2/options:
|
||||
git clone -b main --single-branch -n --depth=1 \
|
||||
https://github.com/grpc-ecosystem/grpc-gateway vendor-proto/grpc-ecosystem && \
|
||||
cd vendor-proto/grpc-ecosystem && \
|
||||
git sparse-checkout set --no-cone protoc-gen-openapiv2/options && \
|
||||
git checkout
|
||||
mkdir -p vendor-proto/protoc-gen-openapiv2
|
||||
mv vendor-proto/grpc-ecosystem/protoc-gen-openapiv2/options vendor-proto/protoc-gen-openapiv2
|
||||
rm -rf vendor-proto/grpc-ecosystem
|
||||
|
||||
.PHONY: .vendor-rm
|
||||
.vendor-rm:
|
||||
rm -rf vendor-proto
|
||||
|
||||
.vendor-proto: .vendor-rm vendor-proto/google/protobuf vendor-proto/validate vendor-proto/google/api vendor-proto/protoc-gen-openapiv2/options
|
||||
|
||||
define generate
|
||||
@if [ -f "$(1)/go.mod" ]; then \
|
||||
@@ -11,12 +73,35 @@ define generate
|
||||
fi
|
||||
endef
|
||||
|
||||
define proto_gen
|
||||
@echo "== generating $(1) =="
|
||||
@protoc \
|
||||
-I api \
|
||||
-I vendor-proto \
|
||||
--plugin=protoc-gen-go=$(BINDIR)/protoc-gen-go \
|
||||
--go_out=pkg/api/ --go_opt paths=source_relative \
|
||||
--plugin=protoc-gen-go-grpc=$(BINDIR)/protoc-gen-go-grpc \
|
||||
--go-grpc_out=pkg/api/ --go-grpc_opt paths=source_relative \
|
||||
--plugin=protoc-gen-validate=$(BINDIR)/protoc-gen-validate \
|
||||
--validate_out="lang=go,paths=source_relative:pkg/api/" \
|
||||
--plugin=protoc-gen-grpc-gateway=$(BINDIR)/protoc-gen-grpc-gateway \
|
||||
--grpc-gateway_out=pkg/api/ \
|
||||
--grpc-gateway_opt=logtostderr=true,paths=source_relative,generate_unbound_methods=true \
|
||||
--plugin=protoc-gen-openapiv2=$(BINDIR)/protoc-gen-openapiv2 \
|
||||
--openapiv2_out=api/openapiv2 \
|
||||
--openapiv2_opt=logtostderr=true \
|
||||
$(1)
|
||||
endef
|
||||
|
||||
cart-generate:
|
||||
$(call generate,cart)
|
||||
cd cart && go mod tidy
|
||||
|
||||
loms-generate:
|
||||
$(call generate,loms)
|
||||
mkdir -p "api/openapiv2"
|
||||
$(foreach f,$(shell find api/loms/v1 -type f -name '*.proto'),$(call proto_gen,$(f),loms))
|
||||
cd loms && go mod tidy
|
||||
|
||||
notifier-generate:
|
||||
$(call generate,notifier)
|
||||
|
||||
Reference in New Issue
Block a user