github.com/yoheimuta/protolint@v0.49.8-0.20240515023657-4ecaebb7575d/internal/addon/plugin/externalRuleProvider.go (about)

     1  package plugin
     2  
     3  import (
     4  	"github.com/yoheimuta/protolint/internal/addon/plugin/proto"
     5  	"github.com/yoheimuta/protolint/internal/addon/plugin/shared"
     6  
     7  	"github.com/yoheimuta/protolint/linter/rule"
     8  )
     9  
    10  // GetExternalRules provides the external rules.
    11  func GetExternalRules(
    12  	clients []shared.RuleSet,
    13  	fixMode bool,
    14  	verbose bool,
    15  ) ([]rule.Rule, error) {
    16  	var rs []rule.Rule
    17  
    18  	for _, client := range clients {
    19  		resp, err := client.ListRules(&proto.ListRulesRequest{
    20  			Verbose: verbose,
    21  			FixMode: fixMode,
    22  		})
    23  		if err != nil {
    24  			return nil, err
    25  		}
    26  
    27  		for _, r := range resp.Rules {
    28  			severity := getSeverity(r.Severity)
    29  			rs = append(rs, newExternalRule(r.Id, r.Purpose, client, severity))
    30  		}
    31  	}
    32  	return rs, nil
    33  }
    34  
    35  func getSeverity(ruleSeverity proto.RuleSeverity) rule.Severity {
    36  	switch ruleSeverity {
    37  	case proto.RuleSeverity_RULE_SEVERITY_ERROR:
    38  		return rule.SeverityError
    39  	case proto.RuleSeverity_RULE_SEVERITY_WARNING:
    40  		return rule.SeverityWarning
    41  	case proto.RuleSeverity_RULE_SEVERITY_NOTE:
    42  		return rule.SeverityNote
    43  	}
    44  
    45  	return rule.SeverityError
    46  }