下記の公式ドキュメントを参考にprotoファイルからボイラーテンプレートを自動生成しようとしましたが、オプションの意味が分かりづらく思ったようなディレクトリに作成されませんでした。
https://grpc.io/docs/languages/go/basics/#generating-client-and-server-code
結論から言うと以下です。
| オプション | 意味 |
|---|---|
| --go_out= |
*.pb.goファイルが作成される起点となるディレクトリ |
| --go_opt=paths= |
source_relativeを指定すると--go_outで指定した直下に*.pb.go`ファイルがさ生成される |
| --go-grpc_out= |
*_grpc.pb.goファイルが作成される起点となるディレクトリ |
| --go-grpc_opt=paths= |
source_relativeを指定すると--go-grpc_outで指定した直下に*_grpc.pb.go`ファイルがさ生成される |
--go_out
.を指定するとprotoファイルと同ディレクトリをコードを生成する起点とします。
.を指定せず,gen/apiなどを指定すれば、コマンドを実行したパスから相対パスのディクレトリにすることも可能です。
--go_opt=paths
goの場合、protoファイルでoption go_package = "github.com/xxx/yyy";のような指定をすると思いますが、その場合、それに対応したディクトリにコードが表示されてしまいます。
例えば、--go_out=gen/apiを指定した場合、自動生成されるコードのパスはgen/api/github.com/xxx/yyyとなってしまいます。
--go_opt=paths=source_relativeを指定すると、gen/apiのパスにコードが自動生成されるようにすることができます。
--go-grpc_out、--go-grpc_opt=pathsについても同様です。