@@ -81,56 +81,46 @@ func (cmd *ConfigValidateCmd) outputJSON(c *cli.Command, validationErr error, wa
8181 Warnings : warnings ,
8282 }
8383
84- if validationErr != nil {
85- var fieldErrs criterio.FieldErrors
86- if errors .As (validationErr , & fieldErrs ) {
87- for _ , fe := range fieldErrs {
88- out .Errors = append (out .Errors , fieldError {
89- Field : fe .Field ,
90- Message : fe .Err .Error (),
91- })
92- }
93- } else {
94- out .Errors = append (out .Errors , fieldError {
95- Message : validationErr .Error (),
96- })
97- }
84+ for _ , fe := range extractFieldErrors (validationErr ) {
85+ out .Errors = append (out .Errors , fieldError {Field : fe .Field , Message : fe .Err .Error ()})
9886 }
9987
10088 enc := json .NewEncoder (c .Root ().Writer )
10189 enc .SetIndent ("" , " " )
10290 return enc .Encode (out )
10391}
10492
93+ // extractFieldErrors extracts field errors from a validation error.
94+ func extractFieldErrors (err error ) criterio.FieldErrors {
95+ if err == nil {
96+ return nil
97+ }
98+ var fieldErrs criterio.FieldErrors
99+ if errors .As (err , & fieldErrs ) {
100+ return fieldErrs
101+ }
102+ return criterio.FieldErrors {{Err : err }}
103+ }
104+
105105func (cmd * ConfigValidateCmd ) outputText (p * printer.Printer , validationErr error , warnings []config.ValidationWarning ) error {
106- // Print errors first (grouped)
107- errorCount := 0
108- if validationErr != nil {
109- p .Printf ("Errors" )
106+ fieldErrs := extractFieldErrors (validationErr )
110107
111- var fieldErrs criterio.FieldErrors
112- if errors .As (validationErr , & fieldErrs ) {
113- errorCount = len (fieldErrs )
114- for _ , fe := range fieldErrs {
115- if fe .Field != "" {
116- p .Printf (" %s %s: %s" , printer .Cross , fe .Field , fe .Err .Error ())
117- } else {
118- p .Printf (" %s %s" , printer .Cross , fe .Err .Error ())
119- }
108+ if len (fieldErrs ) > 0 {
109+ p .Printf ("Errors" )
110+ for _ , fe := range fieldErrs {
111+ if fe .Field != "" {
112+ p .Printf (" %s %s: %s" , printer .Cross , fe .Field , fe .Err .Error ())
113+ } else {
114+ p .Printf (" %s %s" , printer .Cross , fe .Err .Error ())
120115 }
121- } else {
122- errorCount = 1
123- p .Printf (" %s %s" , printer .Cross , validationErr .Error ())
124116 }
125117 }
126118
127- // Print warnings second (grouped)
128119 if len (warnings ) > 0 {
129- if errorCount > 0 {
120+ if len ( fieldErrs ) > 0 {
130121 p .Printf ("" )
131122 }
132123 p .Printf ("Warnings" )
133-
134124 for _ , warn := range warnings {
135125 msg := warn .Message
136126 if warn .Item != "" {
@@ -140,7 +130,6 @@ func (cmd *ConfigValidateCmd) outputText(p *printer.Printer, validationErr error
140130 }
141131 }
142132
143- // Print summary
144133 p .Printf ("" )
145134 if validationErr == nil {
146135 if len (warnings ) > 0 {
@@ -151,6 +140,6 @@ func (cmd *ConfigValidateCmd) outputText(p *printer.Printer, validationErr error
151140 return nil
152141 }
153142
154- p .Errorf ("%d error(s), %d warning(s)" , errorCount , len (warnings ))
143+ p .Errorf ("%d error(s), %d warning(s)" , len ( fieldErrs ) , len (warnings ))
155144 return cli .Exit ("" , 1 )
156145}
0 commit comments