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 }