src
|
|--api/
| |--foo.proto
| |
|--bff/
| |--bar.proto
| |--empty.proto
| |
syntax = "proto3";
package api;
message Foo {
uint32 id = 1;
}
syntax = "proto3";
package bff;
import "api/foo.proto";
message Bar {
api.Foo foo = 1;
}
みたいな感じだとして、普通に
protoc --go_out=plugins=grpc:. bff/*.proto
とかしてもダメなので
#!/bin/bash
for file in `\find bff -name '*.proto'`; do
temp="$temp $file"
done
protoc --go_out=plugins=grpc:. $temp
的な感じで。シェルスクリプト難しい。ちなみにgolangの場合、protocに食わせるprotoファイルはスペース区切りで一度に全指定しないとセルフインポートするコードが生成されて循環インポートでgoのbuildが死ぬ。あとprotoファイルのpackage名にハイフンがあると多分protocが死ぬ。
protoc-gen-go should be able to compile multiple packages per run · Issue #39 · golang/protobuf · GitHub https://t.co/Ssg4NXbZM5
— NIL (@oubakiou) 2017年6月3日
.pb.go import error: local import "." in non-local package · Issue #67 · golang/protobuf · GitHub https://t.co/FzMGDgqBrI
— NIL (@oubakiou) 2017年6月3日