Skip to content

Commit 2f148fa

Browse files
authored
Merge pull request #33 from arran4/codex/improve-error-logging-and-reporting
Improve provider error logging
2 parents 26a6560 + e52e391 commit 2f148fa

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

provider_github.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"context"
77
"encoding/base64"
88
"fmt"
9+
"log"
910
"strings"
1011

1112
"github.com/google/go-github/v55/github"
@@ -54,6 +55,7 @@ func (GitHubProvider) client(ctx context.Context, token *oauth2.Token) *github.C
5455
func (p GitHubProvider) CurrentUser(ctx context.Context, token *oauth2.Token) (*User, error) {
5556
u, _, err := p.client(ctx, token).Users.Get(ctx, "")
5657
if err != nil {
58+
log.Printf("github CurrentUser: %v", err)
5759
return nil, err
5860
}
5961
user := &User{}
@@ -66,6 +68,7 @@ func (p GitHubProvider) CurrentUser(ctx context.Context, token *oauth2.Token) (*
6668
func (p GitHubProvider) GetTags(ctx context.Context, user string, token *oauth2.Token) ([]*Tag, error) {
6769
tags, _, err := p.client(ctx, token).Repositories.ListTags(ctx, user, RepoName, &github.ListOptions{})
6870
if err != nil {
71+
log.Printf("github GetTags: %v", err)
6972
return nil, fmt.Errorf("ListTags: %w", err)
7073
}
7174
res := make([]*Tag, 0, len(tags))
@@ -78,6 +81,7 @@ func (p GitHubProvider) GetTags(ctx context.Context, user string, token *oauth2.
7881
func (p GitHubProvider) GetBranches(ctx context.Context, user string, token *oauth2.Token) ([]*Branch, error) {
7982
bs, _, err := p.client(ctx, token).Repositories.ListBranches(ctx, user, RepoName, &github.BranchListOptions{})
8083
if err != nil {
84+
log.Printf("github GetBranches: %v", err)
8185
return nil, fmt.Errorf("ListBranches: %w", err)
8286
}
8387
res := make([]*Branch, 0, len(bs))
@@ -90,6 +94,7 @@ func (p GitHubProvider) GetBranches(ctx context.Context, user string, token *oau
9094
func (p GitHubProvider) GetCommits(ctx context.Context, user string, token *oauth2.Token) ([]*Commit, error) {
9195
cs, _, err := p.client(ctx, token).Repositories.ListCommits(ctx, user, RepoName, &github.CommitsListOptions{})
9296
if err != nil {
97+
log.Printf("github GetCommits: %v", err)
9398
return nil, fmt.Errorf("ListCommits: %w", err)
9499
}
95100
res := make([]*Commit, 0, len(cs))
@@ -116,13 +121,15 @@ func (p GitHubProvider) GetBookmarks(ctx context.Context, user, ref string, toke
116121
return "", "", nil
117122
}
118123
if err != nil {
124+
log.Printf("github GetBookmarks: %v", err)
119125
return "", "", fmt.Errorf("GetBookmarks: %w", err)
120126
}
121127
if contents.Content == nil {
122128
return "", "", nil
123129
}
124130
b, err := base64.StdEncoding.DecodeString(*contents.Content)
125131
if err != nil {
132+
log.Printf("github GetBookmarks decode: %v", err)
126133
return "", "", fmt.Errorf("GetBookmarks: %w", err)
127134
}
128135
sha := ""
@@ -140,11 +147,13 @@ func (p GitHubProvider) getDefaultBranch(ctx context.Context, user string, clien
140147
if resp != nil && resp.StatusCode == 404 {
141148
rep, err = p.createRepo(ctx, user, client)
142149
if err != nil {
150+
log.Printf("github createRepo: %v", err)
143151
return "", created, err
144152
}
145153
created = true
146154
}
147155
if err != nil {
156+
log.Printf("github getDefaultBranch: %v", err)
148157
return "", created, fmt.Errorf("Repositories.Get: %w", err)
149158
}
150159
if rep.DefaultBranch != nil {
@@ -159,6 +168,7 @@ func (p GitHubProvider) createRepo(ctx context.Context, user string, client *git
159168
rep := &github.Repository{Name: &RepoName, Description: SP("Personal bookmarks"), Private: BP(true)}
160169
rep, _, err := client.Repositories.Create(ctx, "", rep)
161170
if err != nil {
171+
log.Printf("github createRepo: %v", err)
162172
return nil, fmt.Errorf("Repositories.Create: %w", err)
163173
}
164174
_, _, err = client.Repositories.CreateFile(ctx, user, RepoName, "readme.md", &github.RepositoryContentFileOptions{
@@ -169,6 +179,7 @@ See . https://github.com/arran4/gobookmarks `),
169179
Author: commitAuthor, Committer: commitAuthor,
170180
})
171181
if err != nil {
182+
log.Printf("github createRepo readme: %v", err)
172183
return nil, fmt.Errorf("CreateReadme: %w", err)
173184
}
174185
return rep, nil
@@ -180,10 +191,12 @@ func (p GitHubProvider) createRef(ctx context.Context, user string, client *gith
180191
err = nil
181192
}
182193
if err != nil {
194+
log.Printf("github createRef getRef: %v", err)
183195
return fmt.Errorf("GetRef: %w", err)
184196
}
185197
_, _, err = client.Git.CreateRef(ctx, user, RepoName, &github.Reference{Ref: &branchRef, Object: gsref.Object})
186198
if err != nil {
199+
log.Printf("github createRef create: %v", err)
187200
return fmt.Errorf("CreateRef: %w", err)
188201
}
189202
return nil
@@ -207,21 +220,25 @@ func (p GitHubProvider) UpdateBookmarks(ctx context.Context, user string, token
207220
}
208221
_, grefResp, err := client.Git.GetRef(ctx, user, RepoName, branchRef)
209222
if err != nil && grefResp.StatusCode != 404 {
223+
log.Printf("github UpdateBookmarks getRef: %v", err)
210224
return fmt.Errorf("GetRef: %w", err)
211225
}
212226
if grefResp.StatusCode == 404 {
213227
if err := p.createRef(ctx, user, client, sourceRef, branchRef); err != nil {
228+
log.Printf("github UpdateBookmarks create ref: %v", err)
214229
return fmt.Errorf("create ref: %w", err)
215230
}
216231
}
217232
contents, _, resp, err := client.Repositories.GetContents(ctx, user, RepoName, "bookmarks.txt", &github.RepositoryContentGetOptions{Ref: branchRef})
218233
if resp != nil && resp.StatusCode == 404 {
219234
if _, err := p.createRepo(ctx, user, client); err != nil {
235+
log.Printf("github UpdateBookmarks create repo: %v", err)
220236
return fmt.Errorf("CreateRepo: %w", err)
221237
}
222238
return p.CreateBookmarks(ctx, user, token, branch, text)
223239
}
224240
if err != nil {
241+
log.Printf("github UpdateBookmarks get contents: %v", err)
225242
return fmt.Errorf("GetContents: %w", err)
226243
}
227244
if contents == nil || contents.Content == nil {
@@ -239,6 +256,7 @@ func (p GitHubProvider) UpdateBookmarks(ctx context.Context, user string, token
239256
Committer: commitAuthor,
240257
})
241258
if err != nil {
259+
log.Printf("github UpdateBookmarks update: %v", err)
242260
return fmt.Errorf("UpdateBookmarks: %w", err)
243261
}
244262
return nil
@@ -250,6 +268,7 @@ func (p GitHubProvider) CreateBookmarks(ctx context.Context, user string, token
250268
var err error
251269
branch, _, err = p.getDefaultBranch(ctx, user, client, branch)
252270
if err != nil {
271+
log.Printf("github CreateBookmarks default branch: %v", err)
253272
return err
254273
}
255274
}
@@ -261,6 +280,7 @@ func (p GitHubProvider) CreateBookmarks(ctx context.Context, user string, token
261280
Committer: commitAuthor,
262281
})
263282
if err != nil {
283+
log.Printf("github CreateBookmarks: %v", err)
264284
return fmt.Errorf("CreateBookmarks: %w", err)
265285
}
266286
return nil

provider_gitlab.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"context"
77
"encoding/base64"
88
"fmt"
9+
"log"
10+
"net/http"
911
"strings"
1012

1113
gitlab "github.com/xanzy/go-gitlab"
@@ -52,10 +54,12 @@ func (GitLabProvider) client(token *oauth2.Token) (*gitlab.Client, error) {
5254
func (GitLabProvider) CurrentUser(ctx context.Context, token *oauth2.Token) (*User, error) {
5355
c, err := GitLabProvider{}.client(token)
5456
if err != nil {
57+
log.Printf("gitlab CurrentUser client: %v", err)
5558
return nil, err
5659
}
5760
u, _, err := c.Users.CurrentUser()
5861
if err != nil {
62+
log.Printf("gitlab CurrentUser lookup: %v", err)
5963
return nil, err
6064
}
6165
return &User{Login: u.Username}, nil
@@ -64,10 +68,12 @@ func (GitLabProvider) CurrentUser(ctx context.Context, token *oauth2.Token) (*Us
6468
func (GitLabProvider) GetTags(ctx context.Context, user string, token *oauth2.Token) ([]*Tag, error) {
6569
c, err := GitLabProvider{}.client(token)
6670
if err != nil {
71+
log.Printf("gitlab GetTags client: %v", err)
6772
return nil, err
6873
}
6974
tags, _, err := c.Tags.ListTags(user+"/"+RepoName, &gitlab.ListTagsOptions{})
7075
if err != nil {
76+
log.Printf("gitlab GetTags: %v", err)
7177
return nil, fmt.Errorf("ListTags: %w", err)
7278
}
7379
res := make([]*Tag, 0, len(tags))
@@ -80,10 +86,12 @@ func (GitLabProvider) GetTags(ctx context.Context, user string, token *oauth2.To
8086
func (GitLabProvider) GetBranches(ctx context.Context, user string, token *oauth2.Token) ([]*Branch, error) {
8187
c, err := GitLabProvider{}.client(token)
8288
if err != nil {
89+
log.Printf("gitlab GetBranches client: %v", err)
8390
return nil, err
8491
}
8592
bs, _, err := c.Branches.ListBranches(user+"/"+RepoName, &gitlab.ListBranchesOptions{})
8693
if err != nil {
94+
log.Printf("gitlab GetBranches: %v", err)
8795
return nil, fmt.Errorf("ListBranches: %w", err)
8896
}
8997
res := make([]*Branch, 0, len(bs))
@@ -96,10 +104,12 @@ func (GitLabProvider) GetBranches(ctx context.Context, user string, token *oauth
96104
func (GitLabProvider) GetCommits(ctx context.Context, user string, token *oauth2.Token) ([]*Commit, error) {
97105
c, err := GitLabProvider{}.client(token)
98106
if err != nil {
107+
log.Printf("gitlab GetCommits client: %v", err)
99108
return nil, err
100109
}
101110
cs, _, err := c.Commits.ListCommits(user+"/"+RepoName, &gitlab.ListCommitsOptions{})
102111
if err != nil {
112+
log.Printf("gitlab GetCommits: %v", err)
103113
return nil, fmt.Errorf("ListCommits: %w", err)
104114
}
105115
res := make([]*Commit, 0, len(cs))
@@ -118,17 +128,24 @@ func (GitLabProvider) GetCommits(ctx context.Context, user string, token *oauth2
118128
func (GitLabProvider) GetBookmarks(ctx context.Context, user, ref string, token *oauth2.Token) (string, string, error) {
119129
c, err := GitLabProvider{}.client(token)
120130
if err != nil {
131+
log.Printf("gitlab GetBookmarks client: %v", err)
121132
return "", "", err
122133
}
123134
f, _, err := c.RepositoryFiles.GetFile(user+"/"+RepoName, "bookmarks.txt", &gitlab.GetFileOptions{Ref: gitlab.String(ref)})
124135
if err != nil {
125-
if _, ok := err.(*gitlab.ErrorResponse); ok {
136+
if respErr, ok := err.(*gitlab.ErrorResponse); ok {
137+
if respErr.Response != nil && respErr.Response.StatusCode == http.StatusNotFound {
138+
return "", "", nil
139+
}
140+
log.Printf("gitlab GetBookmarks: %v", err)
126141
return "", "", nil
127142
}
143+
log.Printf("gitlab GetBookmarks: %v", err)
128144
return "", "", err
129145
}
130146
data, err := base64.StdEncoding.DecodeString(f.Content)
131147
if err != nil {
148+
log.Printf("gitlab GetBookmarks decode: %v", err)
132149
return "", "", err
133150
}
134151
return string(data), f.LastCommitID, nil
@@ -137,6 +154,7 @@ func (GitLabProvider) GetBookmarks(ctx context.Context, user, ref string, token
137154
func (GitLabProvider) UpdateBookmarks(ctx context.Context, user string, token *oauth2.Token, sourceRef, branch, text, expectSHA string) error {
138155
c, err := GitLabProvider{}.client(token)
139156
if err != nil {
157+
log.Printf("gitlab UpdateBookmarks client: %v", err)
140158
return err
141159
}
142160
opt := &gitlab.UpdateFileOptions{
@@ -149,6 +167,7 @@ func (GitLabProvider) UpdateBookmarks(ctx context.Context, user string, token *o
149167
}
150168
_, _, err = c.RepositoryFiles.UpdateFile(user+"/"+RepoName, "bookmarks.txt", opt)
151169
if err != nil {
170+
log.Printf("gitlab UpdateBookmarks: %v", err)
152171
return err
153172
}
154173
return nil
@@ -157,6 +176,7 @@ func (GitLabProvider) UpdateBookmarks(ctx context.Context, user string, token *o
157176
func (GitLabProvider) CreateBookmarks(ctx context.Context, user string, token *oauth2.Token, branch, text string) error {
158177
c, err := GitLabProvider{}.client(token)
159178
if err != nil {
179+
log.Printf("gitlab CreateBookmarks client: %v", err)
160180
return err
161181
}
162182
opt := &gitlab.CreateFileOptions{
@@ -167,5 +187,8 @@ func (GitLabProvider) CreateBookmarks(ctx context.Context, user string, token *o
167187
CommitMessage: gitlab.String("Auto create from web"),
168188
}
169189
_, _, err = c.RepositoryFiles.CreateFile(user+"/"+RepoName, "bookmarks.txt", opt)
190+
if err != nil {
191+
log.Printf("gitlab CreateBookmarks: %v", err)
192+
}
170193
return err
171194
}

0 commit comments

Comments
 (0)