@@ -83,6 +83,22 @@ ENVTEST_VER = v0.0.0-20240317073005-bd9ea79e8d18
8383ENVTEST_BIN := setup-envtest
8484ENVTEST := $(abspath $(TOOLS_BIN_DIR ) /$(ENVTEST_BIN ) -$(ENVTEST_VER ) )
8585
86+ PROTOC_GEN_GO_VER := v1.36.10
87+ PROTOC_GEN_GO_BIN := protoc-gen-go
88+ PROTOC_GEN_GO := $(abspath $(TOOLS_BIN_DIR ) /$(PROTOC_GEN_GO_BIN ) -$(PROTOC_GEN_GO_VER ) )
89+
90+ PROTOC_GEN_GO_GRPC_VER := v1.5.1
91+ PROTOC_GEN_GO_GRPC_BIN := protoc-gen-go-grpc
92+ PROTOC_GEN_GO_GRPC := $(abspath $(TOOLS_BIN_DIR ) /$(PROTOC_GEN_GO_GRPC_BIN ) -$(PROTOC_GEN_GO_GRPC_VER ) )
93+
94+ PROTOC_GEN_GRPC_GATEWAY_VER := v2.27.3
95+ PROTOC_GEN_GRPC_GATEWAY_BIN := protoc-gen-grpc-gateway
96+ PROTOC_GEN_GRPC_GATEWAY := $(abspath $(TOOLS_BIN_DIR ) /$(PROTOC_GEN_GRPC_GATEWAY_BIN ) -$(PROTOC_GEN_GRPC_GATEWAY_VER ) )
97+
98+ PROTOC_VER := 28.0
99+ PROTOC_BIN := protoc
100+ PROTOC := $(abspath $(TOOLS_BIN_DIR ) /$(PROTOC_BIN ) -$(PROTOC_VER ) )
101+
86102# Scripts
87103GO_INSTALL := ./hack/go-install.sh
88104
@@ -108,6 +124,23 @@ $(GOIMPORTS):
108124$(ENVTEST ) :
109125 GOBIN=$(TOOLS_BIN_DIR ) $(GO_INSTALL ) sigs.k8s.io/controller-runtime/tools/setup-envtest $(ENVTEST_BIN ) $(ENVTEST_VER )
110126
127+ # PROTOC_GEN_GO
128+ $(PROTOC_GEN_GO ) :
129+ GOBIN=$(TOOLS_BIN_DIR ) $(GO_INSTALL ) google.golang.org/protobuf/cmd/protoc-gen-go $(PROTOC_GEN_GO_BIN ) $(PROTOC_GEN_GO_VER )
130+
131+ # PROTOC_GEN_GO_GRPC
132+ $(PROTOC_GEN_GO_GRPC ) :
133+ GOBIN=$(TOOLS_BIN_DIR ) $(GO_INSTALL ) google.golang.org/grpc/cmd/protoc-gen-go-grpc $(PROTOC_GEN_GO_GRPC_BIN ) $(PROTOC_GEN_GO_GRPC_VER )
134+
135+ # PROTOC_GEN_GRPC_GATEWAY
136+ $(PROTOC_GEN_GRPC_GATEWAY ) :
137+ GOBIN=$(TOOLS_BIN_DIR ) $(GO_INSTALL ) github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway $(PROTOC_GEN_GRPC_GATEWAY_BIN ) $(PROTOC_GEN_GRPC_GATEWAY_VER )
138+
139+ # PROTOC
140+ $(PROTOC ) :
141+ curl -L -o $(TOOLS_BIN_DIR ) /protoc.zip https://github.com/protocolbuffers/protobuf/releases/download/v$(PROTOC_VER ) /protoc-$(PROTOC_VER ) -linux-x86_64.zip && \
142+ unzip $(TOOLS_BIN_DIR ) /protoc.zip -d $(TOOLS_BIN_DIR ) /protoc_tmp && mv $(TOOLS_BIN_DIR ) /protoc_tmp/bin/protoc $(PROTOC ) && rm -rf $(TOOLS_BIN_DIR ) /protoc.zip $(TOOLS_BIN_DIR ) /protoc_tmp
143+
111144.PHONY : help
112145help : # # Display this help.
113146 @awk ' BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST )
@@ -285,8 +318,16 @@ manifests: $(CONTROLLER_GEN)
285318 $(CONTROLLER_GEN ) \
286319 $(CRD_OPTIONS ) rbac:roleName=manager-role webhook paths=" ./apis/..." output:crd:artifacts:config=config/crd/bases
287320
321+ # Generate protobuf code
322+ .PHONY : protos
323+ protos : $(PROTOC_GEN_GO ) $(PROTOC_GEN_GO_GRPC ) $(PROTOC_GEN_GRPC_GATEWAY ) $(PROTOC )
324+ PATH=$$ PATH:$(TOOLS_BIN_DIR ) $(PROTOC ) --go_out=. --go_opt=paths=source_relative \
325+ --go-grpc_out=. --go-grpc_opt=paths=source_relative \
326+ --grpc-gateway_out=grpc_api_configuration=apis/protos/azure/compute/v1/vmsizerecommender_http.yaml,logtostderr=true:. --grpc-gateway_opt=paths=source_relative,generate_unbound_methods=true \
327+ apis/protos/azure/compute/v1/vmsizerecommender.proto
328+
288329# Generate code
289- generate : $(CONTROLLER_GEN )
330+ generate : $(CONTROLLER_GEN ) protos
290331 $(CONTROLLER_GEN ) \
291332 object:headerFile=" hack/boilerplate.go.txt" paths=" ./..."
292333
0 commit comments