From 540b26e51d612e83611f67dc9ab012187b93ae93 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Tue, 29 Aug 2023 10:47:05 -0500 Subject: [PATCH] chore: improve error message around gitaskpass failures --- cli/gitaskpass.go | 8 +++++++- coderd/workspaceagents.go | 11 ++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/cli/gitaskpass.go b/cli/gitaskpass.go index fb41613d26836..4868eea95a452 100644 --- a/cli/gitaskpass.go +++ b/cli/gitaskpass.go @@ -44,7 +44,13 @@ func (r *RootCmd) gitAskpass() *clibase.Cmd { if errors.As(err, &apiError) && apiError.StatusCode() == http.StatusNotFound { // This prevents the "Run 'coder --help' for usage" // message from occurring. - cliui.Errorf(inv.Stderr, "%s\n", apiError.Message) + lines := []string{apiError.Message} + if apiError.Detail != "" { + lines = append(lines, apiError.Detail) + } + cliui.Warn(inv.Stderr, "Coder was unable to handle this git request. The default git behavior will be used instead.", + lines..., + ) return cliui.Canceled } return xerrors.Errorf("get git token: %w", err) diff --git a/coderd/workspaceagents.go b/coderd/workspaceagents.go index 7a3b25eee96fc..20c98037eb448 100644 --- a/coderd/workspaceagents.go +++ b/coderd/workspaceagents.go @@ -1996,8 +1996,17 @@ func (api *API) workspaceAgentsGitAuth(rw http.ResponseWriter, r *http.Request) gitAuthConfig = gitAuth } if gitAuthConfig == nil { + detail := "No git providers are configured." + if len(api.GitAuthConfigs) > 0 { + regexURLs := make([]string, 0, len(api.GitAuthConfigs)) + for _, gitAuth := range api.GitAuthConfigs { + regexURLs = append(regexURLs, fmt.Sprintf("%s=%q", gitAuth.ID, gitAuth.Regex.String())) + } + detail = fmt.Sprintf("The configured git provider have regex filters that do not match the git url. Provider url regexs: %s", strings.Join(regexURLs, ",")) + } httpapi.Write(ctx, rw, http.StatusNotFound, codersdk.Response{ - Message: fmt.Sprintf("No git provider found for URL %q", gitURL), + Message: fmt.Sprintf("No matching git provider found in Coder for the url %q.", gitURL), + Detail: detail, }) return }