github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/pkg/protoc/ruleindex.go (about) 1 package protoc 2 3 import ( 4 "github.com/bazelbuild/bazel-gazelle/label" 5 "github.com/bazelbuild/bazel-gazelle/rule" 6 ) 7 8 type RuleIndex interface { 9 // Put records the association of the rule under the given label. 10 Put(label.Label, *rule.Rule) 11 // Get returns the rule under the given label, or nil if not known. 12 Get(label.Label) *rule.Rule 13 } 14 15 // GlobalRuleIndex returns a reference to the global RuleIndex 16 func GlobalRuleIndex() RuleIndex { 17 return globalRuleIndex 18 } 19 20 // globalRuleIndex is the default resolver singleton. 21 var globalRuleIndex = &ruleIndex{ 22 rules: make(map[label.Label]*rule.Rule), 23 } 24 25 // ruleIndex implements RuleIndex. 26 type ruleIndex struct { 27 rules map[label.Label]*rule.Rule 28 } 29 30 func (r *ruleIndex) Put(from label.Label, rule *rule.Rule) { 31 r.rules[from] = rule 32 } 33 34 func (r *ruleIndex) Get(from label.Label) *rule.Rule { 35 return r.rules[from] 36 }