github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/pkg/rule/rules_java/grpc_java_library.go (about) 1 package rules_java 2 3 import ( 4 "github.com/bazelbuild/bazel-gazelle/config" 5 "github.com/bazelbuild/bazel-gazelle/label" 6 "github.com/bazelbuild/bazel-gazelle/resolve" 7 "github.com/bazelbuild/bazel-gazelle/rule" 8 9 "github.com/stackb/rules_proto/pkg/protoc" 10 ) 11 12 const ( 13 grpcJavaLibraryRuleName = "grpc_java_library" 14 grpcJavaLibraryRuleSuffix = "_grpc_java_library" 15 ) 16 17 func init() { 18 protoc.Rules().MustRegisterRule("stackb:rules_proto:grpc_java_library", &grpcJavaLibrary{}) 19 } 20 21 // grpcJavaLibrary implements LanguageRule 22 type grpcJavaLibrary struct{} 23 24 // Name implements part of the LanguageRule interface. 25 func (s *grpcJavaLibrary) Name() string { 26 return grpcJavaLibraryRuleName 27 } 28 29 // KindInfo implements part of the LanguageRule interface. 30 func (s *grpcJavaLibrary) KindInfo() rule.KindInfo { 31 return javaLibraryKindInfo 32 } 33 34 // LoadInfo implements part of the LanguageRule interface. 35 func (s *grpcJavaLibrary) LoadInfo() rule.LoadInfo { 36 return rule.LoadInfo{ 37 Name: "@build_stack_rules_proto//rules/java:grpc_java_library.bzl", 38 Symbols: []string{grpcJavaLibraryRuleName}, 39 } 40 } 41 42 // ProvideRule implements part of the LanguageRule interface. 43 func (s *grpcJavaLibrary) ProvideRule(cfg *protoc.LanguageRuleConfig, pc *protoc.ProtocConfiguration) protoc.RuleProvider { 44 outputs := pc.GetPluginOutputs("grpc:grpc-java:protoc-gen-grpc-java") 45 if len(outputs) == 0 { 46 return nil 47 } 48 49 return &JavaLibrary{ 50 KindName: grpcJavaLibraryRuleName, 51 RuleNameSuffix: grpcJavaLibraryRuleSuffix, 52 Outputs: outputs, 53 RuleConfig: cfg, 54 Config: pc, 55 Resolver: func(c *config.Config, ix *resolve.RuleIndex, r *rule.Rule, imports []string, from label.Label) { 56 deps := append(r.AttrStrings("deps"), ":"+pc.Library.BaseName()+ProtoJavaLibraryRuleSuffix) 57 58 if len(deps) > 0 { 59 r.SetAttr("deps", deps) 60 r.SetAttr("exports", deps) 61 } 62 }, 63 } 64 }