0
0
forked from toolshed/abra

WARN on recipe linting errors during --chaos..

..and show multiple linting errors instead of bailing on the first one.

Re #497
This commit is contained in:
3wc
2025-08-11 11:57:30 +01:00
committed by 3wordchant
parent 56a68dfa91
commit c63f6db61e
2 changed files with 13 additions and 3 deletions

View File

@ -108,7 +108,11 @@ checkout as-is. Recipe commit hashes are also supported as values for
} }
if err := lint.LintForErrors(app.Recipe); err != nil { if err := lint.LintForErrors(app.Recipe); err != nil {
log.Fatal(err) if internal.Chaos {
log.Warn(err)
} else {
log.Fatal(err)
}
} }
if err := validateSecrets(cl, app); err != nil { if err := validateSecrets(cl, app); err != nil {

View File

@ -184,6 +184,8 @@ var LintRules = map[string][]LintRule{
func LintForErrors(recipe recipe.Recipe) error { func LintForErrors(recipe recipe.Recipe) error {
log.Debugf("linting for critical errors in %s configs", recipe.Name) log.Debugf("linting for critical errors in %s configs", recipe.Name)
var errors string
for level := range LintRules { for level := range LintRules {
if level != "error" { if level != "error" {
continue continue
@ -196,14 +198,18 @@ func LintForErrors(recipe recipe.Recipe) error {
ok, err := rule.Function(recipe) ok, err := rule.Function(recipe)
if err != nil { if err != nil {
return fmt.Errorf("lint %s: %s", rule.Ref, err) errors += fmt.Sprintf("\nlint %s: %s", rule.Ref, err)
} }
if !ok { if !ok {
return fmt.Errorf("lint error in %s configs: \"%s\" failed lint checks (%s)", recipe.Name, rule.Description, rule.Ref) errors += fmt.Sprintf("\nlint error in %s configs: \"%s\" failed lint checks (%s)", recipe.Name, rule.Description, rule.Ref)
} }
} }
} }
if (len(errors) > 0) {
return fmt.Errorf(errors[1:])
}
log.Debugf("linting successful, %s is well configured", recipe.Name) log.Debugf("linting successful, %s is well configured", recipe.Name)
return nil return nil