# Some vars to detemrine go locations etc GOROOT=$(which go) GOPATH=$(HOME)/go GOBIN=$(GOPATH)/bin # Evaluates the abs path of the directory where this Makefile resides SRC_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) # Where the protos exist PROTO_DIR:=$(SRC_DIR)/protos # where we want to generate server stubs, clients etc OUT_DIR:=$(SRC_DIR)/gen/go all: createdirs printenv goprotos gwprotos openapiv2 cleanvendors goprotos: echo "Generating GO bindings" protoc --go_out=$(OUT_DIR) --go_opt=paths=source_relative \ --go-grpc_out=$(OUT_DIR) --go-grpc_opt=paths=source_relative \ --proto_path=$(PROTO_DIR) \ $(PROTO_DIR)/onehub/v1/*.proto gwprotos: echo "Generating gRPC Gateway bindings and OpenAPI spec" protoc -I . --grpc-gateway_out $(OUT_DIR) \ --grpc-gateway_opt logtostderr=true \ --grpc-gateway_opt paths=source_relative \ --grpc-gateway_opt generate_unbound_methods=true \ --proto_path=$(PROTO_DIR) \ $(PROTO_DIR)/onehub/v1/*.proto openapiv2: echo "Generating OpenAPI specs" protoc -I . --openapiv2_out $(SRC_DIR)/gen/openapiv2 \ --openapiv2_opt logtostderr=true \ --openapiv2_opt generate_unbound_methods=true \ --openapiv2_opt allow_merge=true \ --openapiv2_opt merge_file_name=allservices \ --proto_path=$(PROTO_DIR) \ $(PROTO_DIR)/onehub/v1/*.proto printenv: @echo MAKEFILE_LIST=$(MAKEFILE_LIST) @echo SRC_DIR=$(SRC_DIR) @echo PROTO_DIR=$(PROTO_DIR) @echo OUT_DIR=$(OUT_DIR) @echo GOROOT=$(GOROOT) @echo GOPATH=$(GOPATH) @echo GOBIN=$(GOBIN) createdirs: rm -Rf $(OUT_DIR) mkdir -p $(OUT_DIR) mkdir -p $(SRC_DIR)/gen/openapiv2 cd $(PROTO_DIR) && ( \ if [ ! -d google ]; then ln -s $(SRC_DIR)/vendors/google . ; fi \ ) cleanvendors: rm -f $(PROTO_DIR)/google