From 51374331233cb6ed99d3427829f32ea850889b46 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Tue, 2 Apr 2024 10:02:30 -0500 Subject: [PATCH] chore: add validation errors to the cli output (#12814) * chore: add validation errors to the cli output --- cli/root.go | 15 ++++++++++++++- cli/testdata/coder_exp_example-error_api.golden | 4 +++- .../coder_exp_example-error_multi-error.golden | 2 ++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/cli/root.go b/cli/root.go index 83367169df..d9407cf217 100644 --- a/cli/root.go +++ b/cli/root.go @@ -1084,10 +1084,23 @@ func formatCoderSDKError(from string, err *codersdk.Error, opts *formatOpts) str _, _ = str.WriteString("\n") } + // The main error message _, _ = str.WriteString(pretty.Sprint(headLineStyle(), err.Message)) + + // Validation errors. + if len(err.Validations) > 0 { + _, _ = str.WriteString("\n") + _, _ = str.WriteString(pretty.Sprint(tailLineStyle(), fmt.Sprintf("%d validation error(s) found", len(err.Validations)))) + for _, e := range err.Validations { + _, _ = str.WriteString("\n\t") + _, _ = str.WriteString(pretty.Sprint(cliui.DefaultStyles.Field, e.Field)) + _, _ = str.WriteString(pretty.Sprintf(cliui.DefaultStyles.Warn, ": %s", e.Detail)) + } + } + if err.Helper != "" { _, _ = str.WriteString("\n") - _, _ = str.WriteString(pretty.Sprint(tailLineStyle(), err.Helper)) + _, _ = str.WriteString(pretty.Sprintf(tailLineStyle(), "Suggestion: %s", err.Helper)) } // By default we do not show the Detail with the helper. if opts.Verbose || (err.Helper == "" && err.Detail != "") { diff --git a/cli/testdata/coder_exp_example-error_api.golden b/cli/testdata/coder_exp_example-error_api.golden index e15b60abbd..a0a8455447 100644 --- a/cli/testdata/coder_exp_example-error_api.golden +++ b/cli/testdata/coder_exp_example-error_api.golden @@ -1,3 +1,5 @@ Encountered an error running "coder exp example-error api", see "coder exp example-error api --help" for more information error: Top level sdk error message. -Have you tried turning it off and on again? +1 validation error(s) found + region : magic dust is not available in your region +Suggestion: Have you tried turning it off and on again? diff --git a/cli/testdata/coder_exp_example-error_multi-error.golden b/cli/testdata/coder_exp_example-error_multi-error.golden index 73a32afd80..2b89275dff 100644 --- a/cli/testdata/coder_exp_example-error_multi-error.golden +++ b/cli/testdata/coder_exp_example-error_multi-error.golden @@ -4,4 +4,6 @@ error: 3 errors encountered: Trace=[wrapped: ]) 2. second error: function decided not to work, and it never will 3. Trace=[wrapped api error: ] Top level sdk error message. + 1 validation error(s) found + region : magic dust is not available in your region magic dust unavailable, please try again later