From 75948368a3b44c26eb2e21b44b90152943e1079a Mon Sep 17 00:00:00 2001 From: Andrew Nester Date: Tue, 8 Oct 2024 17:44:29 +0200 Subject: [PATCH] fix overrides --- .../disable-legacy-features.go | 12 ++++++--- .../disable-legacy-access.go | 12 ++++++--- cmd/workspace/repos/overrides.go | 25 ++++++++++++++++--- cmd/workspace/secrets/put_secret.go | 6 +++++ .../serving-endpoints/serving-endpoints.go | 12 ++++++--- .../temporary-table-credentials.go | 12 ++++++--- libs/cmdio/render.go | 17 +++++++++++++ 7 files changed, 80 insertions(+), 16 deletions(-) diff --git a/cmd/account/disable-legacy-features/disable-legacy-features.go b/cmd/account/disable-legacy-features/disable-legacy-features.go index 6d25b943d..5e732b87b 100755 --- a/cmd/account/disable-legacy-features/disable-legacy-features.go +++ b/cmd/account/disable-legacy-features/disable-legacy-features.go @@ -185,9 +185,15 @@ func newUpdate() *cobra.Command { a := root.AccountClient(ctx) if cmd.Flags().Changed("json") { - err = updateJson.Unmarshal(&updateReq) - if err != nil { - return err + diags := updateJson.Unmarshal(&updateReq) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnosticsToErrorOut(ctx, diags) + if err != nil { + return err + } } } else { return fmt.Errorf("please provide command input in JSON format by specifying the --json flag") diff --git a/cmd/workspace/disable-legacy-access/disable-legacy-access.go b/cmd/workspace/disable-legacy-access/disable-legacy-access.go index fea2b3c40..c50de446b 100755 --- a/cmd/workspace/disable-legacy-access/disable-legacy-access.go +++ b/cmd/workspace/disable-legacy-access/disable-legacy-access.go @@ -187,9 +187,15 @@ func newUpdate() *cobra.Command { w := root.WorkspaceClient(ctx) if cmd.Flags().Changed("json") { - err = updateJson.Unmarshal(&updateReq) - if err != nil { - return err + diags := updateJson.Unmarshal(&updateReq) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnosticsToErrorOut(ctx, diags) + if err != nil { + return err + } } } else { return fmt.Errorf("please provide command input in JSON format by specifying the --json flag") diff --git a/cmd/workspace/repos/overrides.go b/cmd/workspace/repos/overrides.go index c2545fe28..aad38ecc7 100644 --- a/cmd/workspace/repos/overrides.go +++ b/cmd/workspace/repos/overrides.go @@ -34,10 +34,18 @@ func createOverride(createCmd *cobra.Command, createReq *workspace.CreateRepoReq createJson := createCmd.Flag("json").Value.(*flags.JsonFlag) createCmd.RunE = func(cmd *cobra.Command, args []string) (err error) { ctx := cmd.Context() - var diags diag.Diagnostics w := root.WorkspaceClient(ctx) if cmd.Flags().Changed("json") { - diags = createJson.Unmarshal(createReq) + diags := createJson.Unmarshal(createReq) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnosticsToErrorOut(ctx, diags) + if err != nil { + return err + } + } } else { createReq.Url = args[0] if len(args) > 1 { @@ -54,7 +62,7 @@ func createOverride(createCmd *cobra.Command, createReq *workspace.CreateRepoReq if err != nil { return err } - return cmdio.RenderWithDiagnostics(ctx, response, diags) + return cmdio.Render(ctx, response) } } @@ -104,6 +112,15 @@ func updateOverride(updateCmd *cobra.Command, updateReq *workspace.UpdateRepoReq w := root.WorkspaceClient(ctx) if cmd.Flags().Changed("json") { diags = updateJson.Unmarshal(&updateReq) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnosticsToErrorOut(ctx, diags) + if err != nil { + return err + } + } } else { updateReq.RepoId, err = repoArgumentToRepoID(ctx, w, args) if err != nil { @@ -115,7 +132,7 @@ func updateOverride(updateCmd *cobra.Command, updateReq *workspace.UpdateRepoReq if err != nil { return err } - return diags.Error() + return nil } } diff --git a/cmd/workspace/secrets/put_secret.go b/cmd/workspace/secrets/put_secret.go index b3a3859c3..f24814f05 100644 --- a/cmd/workspace/secrets/put_secret.go +++ b/cmd/workspace/secrets/put_secret.go @@ -75,6 +75,12 @@ func newPutSecret() *cobra.Command { if diags.HasError() { return diags.Error() } + if len(diags) > 0 { + err := cmdio.RenderDiagnosticsToErrorOut(ctx, diags) + if err != nil { + return err + } + } } else { putSecretReq.Scope = args[0] putSecretReq.Key = args[1] diff --git a/cmd/workspace/serving-endpoints/serving-endpoints.go b/cmd/workspace/serving-endpoints/serving-endpoints.go index 8fc9b7bdc..363e9ea16 100755 --- a/cmd/workspace/serving-endpoints/serving-endpoints.go +++ b/cmd/workspace/serving-endpoints/serving-endpoints.go @@ -868,9 +868,15 @@ func newPutAiGateway() *cobra.Command { w := root.WorkspaceClient(ctx) if cmd.Flags().Changed("json") { - err = putAiGatewayJson.Unmarshal(&putAiGatewayReq) - if err != nil { - return err + diags := putAiGatewayJson.Unmarshal(&putAiGatewayReq) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnosticsToErrorOut(ctx, diags) + if err != nil { + return err + } } } putAiGatewayReq.Name = args[0] diff --git a/cmd/workspace/temporary-table-credentials/temporary-table-credentials.go b/cmd/workspace/temporary-table-credentials/temporary-table-credentials.go index 8718f7ba1..210a59f8e 100755 --- a/cmd/workspace/temporary-table-credentials/temporary-table-credentials.go +++ b/cmd/workspace/temporary-table-credentials/temporary-table-credentials.go @@ -94,9 +94,15 @@ func newGenerateTemporaryTableCredentials() *cobra.Command { w := root.WorkspaceClient(ctx) if cmd.Flags().Changed("json") { - err = generateTemporaryTableCredentialsJson.Unmarshal(&generateTemporaryTableCredentialsReq) - if err != nil { - return err + diags := generateTemporaryTableCredentialsJson.Unmarshal(&generateTemporaryTableCredentialsReq) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnosticsToErrorOut(ctx, diags) + if err != nil { + return err + } } } diff --git a/libs/cmdio/render.go b/libs/cmdio/render.go index 6594a49b5..6904de435 100644 --- a/libs/cmdio/render.go +++ b/libs/cmdio/render.go @@ -443,6 +443,20 @@ const warningTemplate = `{{ "Warning" | yellow }}: {{ .Summary }} ` +const recommendationTemplate = `{{ "Recommendation" | blue }}: {{ .Summary }} +{{- range $index, $element := .Paths }} + {{ if eq $index 0 }}at {{else}} {{ end}}{{ $element.String | green }} +{{- end }} +{{- range $index, $element := .Locations }} + {{ if eq $index 0 }}in {{else}} {{ end}}{{ $element.String | cyan }} +{{- end }} +{{- if .Detail }} + +{{ .Detail }} +{{- end }} + +` + func RenderDiagnosticsToErrorOut(ctx context.Context, diags diag.Diagnostics) error { c := fromContext(ctx) return RenderDiagnostics(c.err, diags) @@ -451,6 +465,7 @@ func RenderDiagnosticsToErrorOut(ctx context.Context, diags diag.Diagnostics) er func RenderDiagnostics(out io.Writer, diags diag.Diagnostics) error { errorT := template.Must(template.New("error").Funcs(renderFuncMap).Parse(errorTemplate)) warningT := template.Must(template.New("warning").Funcs(renderFuncMap).Parse(warningTemplate)) + recommendationT := template.Must(template.New("recommendation").Funcs(renderFuncMap).Parse(recommendationTemplate)) // Print errors and warnings. for _, d := range diags { @@ -460,6 +475,8 @@ func RenderDiagnostics(out io.Writer, diags diag.Diagnostics) error { t = errorT case diag.Warning: t = warningT + case diag.Recommendation: + t = recommendationT } // Render the diagnostic with the appropriate template.