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  }