github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/pkg/plugin/builtin/grpc_grpc_cpp.go (about) 1 package builtin 2 3 import ( 4 "github.com/bazelbuild/bazel-gazelle/label" 5 "github.com/stackb/rules_proto/pkg/protoc" 6 ) 7 8 func init() { 9 protoc.Plugins().MustRegisterPlugin(&GrpcGrpcCppPlugin{}) 10 } 11 12 // GrpcGrpcCppPlugin implements Plugin for the built-in protoc python plugin. 13 type GrpcGrpcCppPlugin struct{} 14 15 // Name implements part of the Plugin interface. 16 func (p *GrpcGrpcCppPlugin) Name() string { 17 return "grpc:grpc:cpp" 18 } 19 20 // Configure implements part of the Plugin interface. 21 func (p *GrpcGrpcCppPlugin) Configure(ctx *protoc.PluginContext) *protoc.PluginConfiguration { 22 if !protoc.HasServices(ctx.ProtoLibrary.Files()...) { 23 return nil 24 } 25 26 return &protoc.PluginConfiguration{ 27 Label: label.New("build_stack_rules_proto", "plugin/grpc/grpc", "protoc-gen-grpc-cpp"), 28 Outputs: protoc.FlatMapFiles( 29 protoc.ImportPrefixRelativeFileNameWithExtensions(ctx.ProtoLibrary.StripImportPrefix(), ctx.Rel, ".grpc.pb.cc", ".grpc.pb.h"), 30 protoc.HasService, 31 ctx.ProtoLibrary.Files()..., 32 ), 33 Options: ctx.PluginConfig.GetOptions(), 34 } 35 }