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