github.com/yoheimuta/protolint@v0.49.8-0.20240515023657-4ecaebb7575d/internal/linter/config/rules.go (about)

     1  package config
     2  
     3  import "github.com/yoheimuta/protolint/internal/stringsutil"
     4  
     5  // Rules represents the enabled rule set.
     6  type Rules struct {
     7  	NoDefault  bool     `yaml:"no_default" json:"no_default" toml:"no_default"`
     8  	AllDefault bool     `yaml:"all_default" json:"all_default" toml:"all_default"`
     9  	Add        []string `yaml:"add" json:"add" toml:"add"`
    10  	Remove     []string `yaml:"remove" json:"remove" toml:"remove"`
    11  }
    12  
    13  func (r Rules) shouldSkipRule(
    14  	ruleID string,
    15  	defaultRuleIDs []string,
    16  ) bool {
    17  	var ruleIDs []string
    18  	if !r.NoDefault {
    19  		ruleIDs = append(ruleIDs, defaultRuleIDs...)
    20  	}
    21  
    22  	for _, add := range r.Add {
    23  		ruleIDs = append(ruleIDs, add)
    24  	}
    25  
    26  	var newRuleIDs []string
    27  	for _, id := range ruleIDs {
    28  		if !stringsutil.ContainsStringInSlice(id, r.Remove) {
    29  			newRuleIDs = append(newRuleIDs, id)
    30  		}
    31  	}
    32  
    33  	return !stringsutil.ContainsStringInSlice(ruleID, newRuleIDs)
    34  }