From 98cf176c8181d6365b8bc8c7335192efa1002826 Mon Sep 17 00:00:00 2001
From: Hidde Beydals <hello@hidde.co>
Date: Tue, 23 Jun 2020 12:25:40 +0200
Subject: [PATCH] Improve Git provider error messages

---
 pkg/git/provider_github.go | 18 +++++++++---------
 pkg/git/provider_gitlab.go | 14 +++++++-------
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/pkg/git/provider_github.go b/pkg/git/provider_github.go
index 27b67bb5..a2340478 100644
--- a/pkg/git/provider_github.go
+++ b/pkg/git/provider_github.go
@@ -77,7 +77,7 @@ func (p *GithubProvider) CreateRepository(ctx context.Context, r *Repository) (b
 	})
 	if err != nil {
 		if !strings.Contains(err.Error(), "name already exists on this account") {
-			return false, fmt.Errorf("create repository error: %w", err)
+			return false, fmt.Errorf("failed to create repository, error: %w", err)
 		}
 	} else {
 		return true, nil
@@ -95,13 +95,13 @@ func (p *GithubProvider) AddTeam(ctx context.Context, r *Repository, name, permi
 	// check team exists
 	_, _, err = gh.Teams.GetTeamBySlug(ctx, r.Owner, name)
 	if err != nil {
-		return false, fmt.Errorf("get team %s error: %w", name, err)
+		return false, fmt.Errorf("failed to retrieve team '%s', error: %w", name, err)
 	}
 
 	// check if team is assigned to the repo
 	_, resp, err := gh.Teams.IsTeamRepoBySlug(ctx, r.Owner, name, r.Owner, r.Name)
 	if resp == nil && err != nil {
-		return false, fmt.Errorf("is team %s error: %w", name, err)
+		return false, fmt.Errorf("failed to determine if team '%s' is assigned to the repository, error: %w", name, err)
 	}
 
 	// add team to the repo
@@ -110,7 +110,7 @@ func (p *GithubProvider) AddTeam(ctx context.Context, r *Repository, name, permi
 			Permission: permission,
 		})
 		if err != nil {
-			return false, fmt.Errorf("add team %s error: %w", name, err)
+			return false, fmt.Errorf("failed to add team '%s' to the repository, error: %w", name, err)
 		}
 		return true, nil
 	}
@@ -128,10 +128,10 @@ func (p *GithubProvider) AddDeployKey(ctx context.Context, r *Repository, key, k
 	// list deploy keys
 	keys, resp, err := gh.Repositories.ListKeys(ctx, r.Owner, r.Name, nil)
 	if err != nil {
-		return false, fmt.Errorf("list deploy keys error: %w", err)
+		return false, fmt.Errorf("failed to list deploy keys, error: %w", err)
 	}
 	if resp.StatusCode >= 300 {
-		return false, fmt.Errorf("list deploy keys failed with status code: %s", resp.Status)
+		return false, fmt.Errorf("failed to list deploy keys (status code: %s)", resp.Status)
 	}
 
 	// check if the key exists
@@ -152,10 +152,10 @@ func (p *GithubProvider) AddDeployKey(ctx context.Context, r *Repository, key, k
 	if existingKey != nil {
 		resp, err := gh.Repositories.DeleteKey(ctx, r.Owner, r.Name, *existingKey.ID)
 		if err != nil {
-			return false, fmt.Errorf("delete deploy key error: %w", err)
+			return false, fmt.Errorf("failed to delete deploy key '%s', error: %w", keyName, err)
 		}
 		if resp.StatusCode >= 300 {
-			return false, fmt.Errorf("delete deploy key failed with status code: %s", resp.Status)
+			return false, fmt.Errorf("failed to delete deploy key '%s' (status code: %s)", keyName, resp.Status)
 		}
 	}
 
@@ -168,7 +168,7 @@ func (p *GithubProvider) AddDeployKey(ctx context.Context, r *Repository, key, k
 			ReadOnly: &isReadOnly,
 		})
 		if err != nil {
-			return false, fmt.Errorf("create deploy key error: %w", err)
+			return false, fmt.Errorf("failed to create deploy key '%s', error: %w", keyName, err)
 		}
 		return true, nil
 	}
diff --git a/pkg/git/provider_gitlab.go b/pkg/git/provider_gitlab.go
index 1b71987f..c3012435 100644
--- a/pkg/git/provider_gitlab.go
+++ b/pkg/git/provider_gitlab.go
@@ -59,7 +59,7 @@ func (p *GitLabProvider) CreateRepository(ctx context.Context, r *Repository) (b
 	if !p.IsPersonal {
 		groups, _, err := gl.Groups.ListGroups(&gitlab.ListGroupsOptions{Search: gitlab.String(r.Owner)}, gitlab.WithContext(ctx))
 		if err != nil {
-			return false, fmt.Errorf("list groups error: %w", err)
+			return false, fmt.Errorf("failed to list groups, error: %w", err)
 		}
 
 		if len(groups) > 0 {
@@ -74,7 +74,7 @@ func (p *GitLabProvider) CreateRepository(ctx context.Context, r *Repository) (b
 
 	projects, _, err := gl.Projects.ListProjects(&gitlab.ListProjectsOptions{Search: gitlab.String(r.Name)}, gitlab.WithContext(ctx))
 	if err != nil {
-		return false, fmt.Errorf("list projects error: %w", err)
+		return false, fmt.Errorf("failed to list projects, error: %w", err)
 	}
 
 	if len(projects) == 0 {
@@ -87,7 +87,7 @@ func (p *GitLabProvider) CreateRepository(ctx context.Context, r *Repository) (b
 
 		_, _, err := gl.Projects.CreateProject(p)
 		if err != nil {
-			return false, fmt.Errorf("create project error: %w", err)
+			return false, fmt.Errorf("failed to create project, error: %w", err)
 		}
 		return true, nil
 	}
@@ -111,7 +111,7 @@ func (p *GitLabProvider) AddDeployKey(ctx context.Context, r *Repository, key, k
 	var projId int
 	projects, _, err := gl.Projects.ListProjects(&gitlab.ListProjectsOptions{Search: gitlab.String(r.Name)}, gitlab.WithContext(ctx))
 	if err != nil {
-		return false, fmt.Errorf("list projects error: %w", err)
+		return false, fmt.Errorf("failed to list projects, error: %w", err)
 	}
 	if len(projects) > 0 {
 		projId = projects[0].ID
@@ -122,7 +122,7 @@ func (p *GitLabProvider) AddDeployKey(ctx context.Context, r *Repository, key, k
 	// check if the key exists
 	keys, _, err := gl.DeployKeys.ListProjectDeployKeys(projId, &gitlab.ListProjectDeployKeysOptions{})
 	if err != nil {
-		return false, fmt.Errorf("list keys error: %w", err)
+		return false, fmt.Errorf("failed to list deploy keys, error: %w", err)
 	}
 
 	shouldCreateKey := true
@@ -142,7 +142,7 @@ func (p *GitLabProvider) AddDeployKey(ctx context.Context, r *Repository, key, k
 	if existingKey != nil {
 		_, err := gl.DeployKeys.DeleteDeployKey(projId, existingKey.ID, gitlab.WithContext(ctx))
 		if err != nil {
-			return false, fmt.Errorf("delete key error: %w", err)
+			return false, fmt.Errorf("failed to delete deploy key '%s', error: %w", keyName, err)
 		}
 	}
 
@@ -154,7 +154,7 @@ func (p *GitLabProvider) AddDeployKey(ctx context.Context, r *Repository, key, k
 			CanPush: gitlab.Bool(false),
 		}, gitlab.WithContext(ctx))
 		if err != nil {
-			return false, fmt.Errorf("add key error: %w", err)
+			return false, fmt.Errorf("failed to create deploy key '%s', error: %w", keyName, err)
 		}
 		return true, nil
 	}
-- 
GitLab