Edited at

外部packageへのimportを含むprotoファイルをまとめてprotocでgo_outするシェルスクリプト

More than 1 year has passed since last update.

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が死ぬ。