0

I have a GRPC service and associated requests declared in a file called github.com/myuser/myrepo/protos/iam/v1/service.proto. The header for this file looks like this:

syntax = "proto3";
package myrepo.iam.v1;

option go_package = "github.com/myuser/myrepo-go/iam/v1"; // golang

Now, when I attempt to compile this using the following protoc command from the myrepo directory:

find ./protos -type f -name "*.proto" -exec protoc --go_out=./gopb --go-grpc_out=./gopb --go_opt=module=github.com/myuser/myrepo-go {} \;

This command works and produces two files:

gopb /
- iam /
  - v1 /
    - service.pb.go
- github.com /
  - myuser /
    - myrepo-go /
      - iam /
        - v1 /
          - service_grpc.pb.go

Of these files, service.pb.go is located correctly but I'm not sure why service_grpc.pb.go is located where it is. How can I ensure that both files are written to gopb/iam/v1/?

Woody1193
  • 7,252
  • 5
  • 40
  • 90

1 Answers1

1

You need to duplicate the --go_opt=module= flag for gRPC i.e. --go-grpc_opt=module=github.com/myuser/myrepo-go

protoc \
--go_out=./gopb \
--go_opt=module=github.com/myuser/myrepo-go
--go-grpc_out=./gopb \
--go-grpc_opt=module=github.com/myuser/myrepo-go \
service.proto
Woody1193
  • 7,252
  • 5
  • 40
  • 90
DazWilkin
  • 32,823
  • 5
  • 47
  • 88