Задать вопрос
@DeYuro

Как сгенерировать код protoc --go-grpc_out в зоне видимости сгенерированного кода --go_out?

В старых проектах использовал старый proto-gen-go который поддерживал плагины и позволял сгенерировать сериализованные данные и клиент\сервер в одном pb.go файле

сейчас же использую protoc-gen-go v1.27.1 который как я понял не поддерживает плагины и требует явного указния флага --go-grpc_out для генерации клиент\сервер

согласно команде

protoc -I /usr/local/include -I $PWD/api/dummy-proto --go_out=generated --go-grpc_out=generated --go_opt=paths=source_relative proto/v1/foo.proto

получаю такое дерево файлов
generated
|_proto
  |_v1
  |_dummy
  | |_foo_grpc.pb.go //package dummy
  |_foo.pb.go //package dummy


Из за того что foo_grpc.pb.go сгенерировался в отдельной папки dummy его функции не видят переменных из foo.pb.go - решается переносом файла на 1 уровень.

Что я делаю не так? Есть ли способ генерить 1 файл как раньше?

Так же есть ли способ использовать старые флаги как --go_out=import_path=" и указывать package через M в cmd без слэшей и go_options в протофайле например:
go_out=import_path=grpc_v1_proto,M$PWD/proto/v1/foo.proto=grpc_v1_proto"


foo.proto

syntax = "proto3";

package dummy.v1.foo;
option go_package = "proto/v1/dummy";

import "proto/v1/structures.proto";

service FooService {
  rpc reverse(ReverseRequest) returns (ReverseResponse);
  rpc getBar(GetBarRequest) returns (GetBarResponse);
}

message ReverseRequest {
  string text = 1;
}

message ReverseResponse {
  string reversed_text = 1;
}

message GetBarRequest {
}

message GetBarResponse {
  structures.Bar bar = 1;
}
  • Вопрос задан
  • 487 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы