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  }