Select Git revision
Makefile 2.17 KiB
PROTODIR=perxis-proto/proto
DSTDIR=./proto
ALLPROTO?=$(shell find $(PROTODIR) -name '*.proto' )
# Убираем status.proto нужен только для front
PROTOFILES= $(filter-out $(PROTODIR)/status/status.proto, $(ALLPROTO))
PROTOGOFILES=$(PROTOFILES:.proto=.pb.go)
PROTOGOGRPCFILES=$(PROTOFILES:.proto=_grpc.pb.go)
# Генерация grpc-клиентов для go
proto: protoc-check protoc-gen-go-check $(PROTOGOFILES)
@echo "Generated all protobuf Go files"
%.pb.go: %.proto
@protoc -I=$(PROTODIR) --experimental_allow_proto3_optional --go_out=$(DSTDIR) --go-grpc_out=$(DSTDIR) --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative "$<"
proto-clean:
@rm -r $(DSTDIR)/*
# Helpers
#
# Проверка, что установлен компилятор для Protobuf
protoc-check:
ifeq (,$(shell which protoc))
$(error "Protocol Buffers not found. Run \"brew install protobuf\" \
or visit \"https://grpc.io/docs/protoc-installation/#install-using-a-package-manager\" for more.\n")
endif
# Проверяется, установлен ли 'protoc-gen-go' - плагин для генерации GRPC-Go клиента
protoc-gen-go-check:
ifeq (,$(wildcard $(GOPATH)/bin/protoc-gen-go))
$(error "Protocol Buffers Go plugin not found. \
Run \"go get -u google.golang.org/protobuf/cmd/protoc-gen-go google.golang.org/grpc/cmd/protoc-gen-go-grpc\" \
or visit \"https://github.com/golang/protobuf/tree/v1.3.2#installation\" for more.\n")
endif
#MICROGENFILES?=$(shell find $(SERVICESDIR) -name "service.go" -exec grep -Ril "microgen" {} \;)
#SERVICEDIRS?=$(shell find $(SERVICESDIR) -name "service" -type d -exec dirname {} \;)
#SERVICEFILES?=$(shell find $(SERVICESDIR) -name "service.go" -exec grep -Ril "go:generate" {} \;)
# Генерация моков для всех интерфейсов, найденных в директории. Выходные файлы с моками сохраняются в `./mocks`
MOCKSDIRS?=$(shell find . -name "service.go" -exec dirname {} \;)
MOCKS=$(MOCKSDIRS:=/mocks)
mocks: $(MOCKS)
@echo "Generate mocks $<"
%/mocks: %
@echo "$@ - $<"
@mockery --log-level="error" --all --dir "$<" --output="$@"
mocks-clean:
@rm -rf $(MOCKS)