goprotocol-buffersgrpc-goprotobuf-go

Grpc Go Generated.pb.go import was not formatted


I imported proto file (validator.proto) from one of my project https://github.com/maanasasubrahmanyam-sd/customValidation to another project (test.proto) https://github.com/maanasasubrahmanyam-sd/customeValTest/tree/master/interfaces/test_server

go get github.com/maanasasubrahmanyam-sd/customValidation

protoc  \
-I. \
-I $GOPATH/src/ \
--proto_path=${GOPATH}/pkg/mod/github.com/envoyproxy/protoc-gen-validate@v0.1.0 \
--proto_path=${GOPATH}/src/github.com/google/protobuf/src \
--go_out="plugins=grpc:./generated"  \
--validate_out="lang=go:./generated" \
--govalidators_out=. \
./interfaces/test_server/*.proto

The correct import should come as github.com/maanasasubrahmanyam-sd/customValidation/validator. But test.pb.go import was coming as _ "./validator" which shows red line in Goland.

EDIT - All pb.go files are showing errors in them. I suspect it is due to bad import.

I google it but did not found any relevant information. Any suggestion experts ?


Solution

  • You can address the proto path in two ways,

    One: if your import proto file is in your local then you should move it to your parent directory then address it from your parent path like this:

    - parentDirectory
    -- directory1
    --- proto1.proto
    -- importDirectory
    --- proto2.proto
    

    you can build this file(proto1.proto) with this command :

    protoc --proto_path=parentDirectory/directory1 --proto_path=parentDirectory --go-grpc_out=***your output path*** --go_out=***your output path*** parentDirectory/directory1/proto1.proto

    Two: If your proto file is in URL: then you can add it to your build command like this:

    protoc --proto_path=src \
      --go_opt=Mprotos/buzz.proto=example.com/project/protos/fizz \
      --go_opt=Mprotos/bar.proto=example.com/project/protos/foo \
      protos/buzz.proto protos/bar.proto