Skip to content

Commit fb5a355

Browse files
committed
Ensure original errors are wrapped with "%w" instead of "%v"
1 parent 3abde5f commit fb5a355

File tree

12 files changed

+121
-121
lines changed

12 files changed

+121
-121
lines changed

api/api.go

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,19 @@ type User struct {
4040
func (a *API) GetUser(ctx context.Context) (*User, error) {
4141
req, err := http.NewRequest(http.MethodGet, githubAPI+"/user", nil)
4242
if err != nil {
43-
return nil, fmt.Errorf("error creating request: %v", err)
43+
return nil, fmt.Errorf("error creating request: %w", err)
4444
}
4545

4646
a.setHeaders(req)
4747
resp, err := a.do(ctx, req, "/user")
4848
if err != nil {
49-
return nil, fmt.Errorf("error making request: %v", err)
49+
return nil, fmt.Errorf("error making request: %w", err)
5050
}
5151
defer resp.Body.Close()
5252

5353
b, err := ioutil.ReadAll(resp.Body)
5454
if err != nil {
55-
return nil, fmt.Errorf("error reading response body: %v", err)
55+
return nil, fmt.Errorf("error reading response body: %w", err)
5656
}
5757

5858
if resp.StatusCode != http.StatusOK {
@@ -61,7 +61,7 @@ func (a *API) GetUser(ctx context.Context) (*User, error) {
6161

6262
var response User
6363
if err := json.Unmarshal(b, &response); err != nil {
64-
return nil, fmt.Errorf("error unmarshaling response: %v", err)
64+
return nil, fmt.Errorf("error unmarshaling response: %w", err)
6565
}
6666

6767
return &response, nil
@@ -72,7 +72,7 @@ func jsonErrorResponse(b []byte) error {
7272
Message string `json:"message"`
7373
}
7474
if err := json.Unmarshal(b, &response); err != nil {
75-
return fmt.Errorf("error unmarshaling error response: %v", err)
75+
return fmt.Errorf("error unmarshaling error response: %w", err)
7676
}
7777

7878
return errors.New(response.Message)
@@ -85,19 +85,19 @@ type Repository struct {
8585
func (a *API) GetRepository(ctx context.Context, nwo string) (*Repository, error) {
8686
req, err := http.NewRequest(http.MethodGet, githubAPI+"/repos/"+strings.ToLower(nwo), nil)
8787
if err != nil {
88-
return nil, fmt.Errorf("error creating request: %v", err)
88+
return nil, fmt.Errorf("error creating request: %w", err)
8989
}
9090

9191
a.setHeaders(req)
9292
resp, err := a.do(ctx, req, "/repos/*")
9393
if err != nil {
94-
return nil, fmt.Errorf("error making request: %v", err)
94+
return nil, fmt.Errorf("error making request: %w", err)
9595
}
9696
defer resp.Body.Close()
9797

9898
b, err := ioutil.ReadAll(resp.Body)
9999
if err != nil {
100-
return nil, fmt.Errorf("error reading response body: %v", err)
100+
return nil, fmt.Errorf("error reading response body: %w", err)
101101
}
102102

103103
if resp.StatusCode != http.StatusOK {
@@ -106,7 +106,7 @@ func (a *API) GetRepository(ctx context.Context, nwo string) (*Repository, error
106106

107107
var response Repository
108108
if err := json.Unmarshal(b, &response); err != nil {
109-
return nil, fmt.Errorf("error unmarshaling response: %v", err)
109+
return nil, fmt.Errorf("error unmarshaling response: %w", err)
110110
}
111111

112112
return &response, nil
@@ -154,19 +154,19 @@ func (a *API) ListCodespaces(ctx context.Context, user *User) ([]*Codespace, err
154154
http.MethodGet, githubAPI+"/vscs_internal/user/"+user.Login+"/codespaces", nil,
155155
)
156156
if err != nil {
157-
return nil, fmt.Errorf("error creating request: %v", err)
157+
return nil, fmt.Errorf("error creating request: %w", err)
158158
}
159159

160160
a.setHeaders(req)
161161
resp, err := a.do(ctx, req, "/vscs_internal/user/*/codespaces")
162162
if err != nil {
163-
return nil, fmt.Errorf("error making request: %v", err)
163+
return nil, fmt.Errorf("error making request: %w", err)
164164
}
165165
defer resp.Body.Close()
166166

167167
b, err := ioutil.ReadAll(resp.Body)
168168
if err != nil {
169-
return nil, fmt.Errorf("error reading response body: %v", err)
169+
return nil, fmt.Errorf("error reading response body: %w", err)
170170
}
171171

172172
if resp.StatusCode != http.StatusOK {
@@ -177,7 +177,7 @@ func (a *API) ListCodespaces(ctx context.Context, user *User) ([]*Codespace, err
177177
Codespaces []*Codespace `json:"codespaces"`
178178
}
179179
if err := json.Unmarshal(b, &response); err != nil {
180-
return nil, fmt.Errorf("error unmarshaling response: %v", err)
180+
return nil, fmt.Errorf("error unmarshaling response: %w", err)
181181
}
182182
return response.Codespaces, nil
183183
}
@@ -193,7 +193,7 @@ type getCodespaceTokenResponse struct {
193193
func (a *API) GetCodespaceToken(ctx context.Context, ownerLogin, codespaceName string) (string, error) {
194194
reqBody, err := json.Marshal(getCodespaceTokenRequest{true})
195195
if err != nil {
196-
return "", fmt.Errorf("error preparing request body: %v", err)
196+
return "", fmt.Errorf("error preparing request body: %w", err)
197197
}
198198

199199
req, err := http.NewRequest(
@@ -202,19 +202,19 @@ func (a *API) GetCodespaceToken(ctx context.Context, ownerLogin, codespaceName s
202202
bytes.NewBuffer(reqBody),
203203
)
204204
if err != nil {
205-
return "", fmt.Errorf("error creating request: %v", err)
205+
return "", fmt.Errorf("error creating request: %w", err)
206206
}
207207

208208
a.setHeaders(req)
209209
resp, err := a.do(ctx, req, "/vscs_internal/user/*/codespaces/*/token")
210210
if err != nil {
211-
return "", fmt.Errorf("error making request: %v", err)
211+
return "", fmt.Errorf("error making request: %w", err)
212212
}
213213
defer resp.Body.Close()
214214

215215
b, err := ioutil.ReadAll(resp.Body)
216216
if err != nil {
217-
return "", fmt.Errorf("error reading response body: %v", err)
217+
return "", fmt.Errorf("error reading response body: %w", err)
218218
}
219219

220220
if resp.StatusCode != http.StatusOK {
@@ -223,7 +223,7 @@ func (a *API) GetCodespaceToken(ctx context.Context, ownerLogin, codespaceName s
223223

224224
var response getCodespaceTokenResponse
225225
if err := json.Unmarshal(b, &response); err != nil {
226-
return "", fmt.Errorf("error unmarshaling response: %v", err)
226+
return "", fmt.Errorf("error unmarshaling response: %w", err)
227227
}
228228

229229
return response.RepositoryToken, nil
@@ -236,19 +236,19 @@ func (a *API) GetCodespace(ctx context.Context, token, owner, codespace string)
236236
nil,
237237
)
238238
if err != nil {
239-
return nil, fmt.Errorf("error creating request: %v", err)
239+
return nil, fmt.Errorf("error creating request: %w", err)
240240
}
241241

242242
req.Header.Set("Authorization", "Bearer "+token)
243243
resp, err := a.do(ctx, req, "/vscs_internal/user/*/codespaces/*")
244244
if err != nil {
245-
return nil, fmt.Errorf("error making request: %v", err)
245+
return nil, fmt.Errorf("error making request: %w", err)
246246
}
247247
defer resp.Body.Close()
248248

249249
b, err := ioutil.ReadAll(resp.Body)
250250
if err != nil {
251-
return nil, fmt.Errorf("error reading response body: %v", err)
251+
return nil, fmt.Errorf("error reading response body: %w", err)
252252
}
253253

254254
if resp.StatusCode != http.StatusOK {
@@ -257,7 +257,7 @@ func (a *API) GetCodespace(ctx context.Context, token, owner, codespace string)
257257

258258
var response Codespace
259259
if err := json.Unmarshal(b, &response); err != nil {
260-
return nil, fmt.Errorf("error unmarshaling response: %v", err)
260+
return nil, fmt.Errorf("error unmarshaling response: %w", err)
261261
}
262262

263263
return &response, nil
@@ -270,19 +270,19 @@ func (a *API) StartCodespace(ctx context.Context, token string, codespace *Codes
270270
nil,
271271
)
272272
if err != nil {
273-
return fmt.Errorf("error creating request: %v", err)
273+
return fmt.Errorf("error creating request: %w", err)
274274
}
275275

276276
req.Header.Set("Authorization", "Bearer "+token)
277277
resp, err := a.do(ctx, req, "/vscs_internal/proxy/environments/*/start")
278278
if err != nil {
279-
return fmt.Errorf("error making request: %v", err)
279+
return fmt.Errorf("error making request: %w", err)
280280
}
281281
defer resp.Body.Close()
282282

283283
b, err := ioutil.ReadAll(resp.Body)
284284
if err != nil {
285-
return fmt.Errorf("error reading response body: %v", err)
285+
return fmt.Errorf("error reading response body: %w", err)
286286
}
287287

288288
if resp.StatusCode != http.StatusOK {
@@ -308,18 +308,18 @@ type getCodespaceRegionLocationResponse struct {
308308
func (a *API) GetCodespaceRegionLocation(ctx context.Context) (string, error) {
309309
req, err := http.NewRequest(http.MethodGet, "https://online.visualstudio.com/api/v1/locations", nil)
310310
if err != nil {
311-
return "", fmt.Errorf("error creating request: %v", err)
311+
return "", fmt.Errorf("error creating request: %w", err)
312312
}
313313

314314
resp, err := a.do(ctx, req, req.URL.String())
315315
if err != nil {
316-
return "", fmt.Errorf("error making request: %v", err)
316+
return "", fmt.Errorf("error making request: %w", err)
317317
}
318318
defer resp.Body.Close()
319319

320320
b, err := ioutil.ReadAll(resp.Body)
321321
if err != nil {
322-
return "", fmt.Errorf("error reading response body: %v", err)
322+
return "", fmt.Errorf("error reading response body: %w", err)
323323
}
324324

325325
if resp.StatusCode != http.StatusOK {
@@ -328,7 +328,7 @@ func (a *API) GetCodespaceRegionLocation(ctx context.Context) (string, error) {
328328

329329
var response getCodespaceRegionLocationResponse
330330
if err := json.Unmarshal(b, &response); err != nil {
331-
return "", fmt.Errorf("error unmarshaling response: %v", err)
331+
return "", fmt.Errorf("error unmarshaling response: %w", err)
332332
}
333333

334334
return response.Current, nil
@@ -342,7 +342,7 @@ type SKU struct {
342342
func (a *API) GetCodespacesSKUs(ctx context.Context, user *User, repository *Repository, branch, location string) ([]*SKU, error) {
343343
req, err := http.NewRequest(http.MethodGet, githubAPI+"/vscs_internal/user/"+user.Login+"/skus", nil)
344344
if err != nil {
345-
return nil, fmt.Errorf("error creating request: %v", err)
345+
return nil, fmt.Errorf("error creating request: %w", err)
346346
}
347347

348348
q := req.URL.Query()
@@ -354,13 +354,13 @@ func (a *API) GetCodespacesSKUs(ctx context.Context, user *User, repository *Rep
354354
a.setHeaders(req)
355355
resp, err := a.do(ctx, req, "/vscs_internal/user/*/skus")
356356
if err != nil {
357-
return nil, fmt.Errorf("error making request: %v", err)
357+
return nil, fmt.Errorf("error making request: %w", err)
358358
}
359359
defer resp.Body.Close()
360360

361361
b, err := ioutil.ReadAll(resp.Body)
362362
if err != nil {
363-
return nil, fmt.Errorf("error reading response body: %v", err)
363+
return nil, fmt.Errorf("error reading response body: %w", err)
364364
}
365365

366366
if resp.StatusCode != http.StatusOK {
@@ -371,7 +371,7 @@ func (a *API) GetCodespacesSKUs(ctx context.Context, user *User, repository *Rep
371371
SKUs []*SKU `json:"skus"`
372372
}
373373
if err := json.Unmarshal(b, &response); err != nil {
374-
return nil, fmt.Errorf("error unmarshaling response: %v", err)
374+
return nil, fmt.Errorf("error unmarshaling response: %w", err)
375375
}
376376

377377
return response.SKUs, nil
@@ -387,24 +387,24 @@ type createCodespaceRequest struct {
387387
func (a *API) CreateCodespace(ctx context.Context, user *User, repository *Repository, sku, branch, location string) (*Codespace, error) {
388388
requestBody, err := json.Marshal(createCodespaceRequest{repository.ID, branch, location, sku})
389389
if err != nil {
390-
return nil, fmt.Errorf("error marshaling request: %v", err)
390+
return nil, fmt.Errorf("error marshaling request: %w", err)
391391
}
392392

393393
req, err := http.NewRequest(http.MethodPost, githubAPI+"/vscs_internal/user/"+user.Login+"/codespaces", bytes.NewBuffer(requestBody))
394394
if err != nil {
395-
return nil, fmt.Errorf("error creating request: %v", err)
395+
return nil, fmt.Errorf("error creating request: %w", err)
396396
}
397397

398398
a.setHeaders(req)
399399
resp, err := a.do(ctx, req, "/vscs_internal/user/*/codespaces")
400400
if err != nil {
401-
return nil, fmt.Errorf("error making request: %v", err)
401+
return nil, fmt.Errorf("error making request: %w", err)
402402
}
403403
defer resp.Body.Close()
404404

405405
b, err := ioutil.ReadAll(resp.Body)
406406
if err != nil {
407-
return nil, fmt.Errorf("error reading response body: %v", err)
407+
return nil, fmt.Errorf("error reading response body: %w", err)
408408
}
409409

410410
if resp.StatusCode > http.StatusAccepted {
@@ -413,7 +413,7 @@ func (a *API) CreateCodespace(ctx context.Context, user *User, repository *Repos
413413

414414
var response Codespace
415415
if err := json.Unmarshal(b, &response); err != nil {
416-
return nil, fmt.Errorf("error unmarshaling response: %v", err)
416+
return nil, fmt.Errorf("error unmarshaling response: %w", err)
417417
}
418418

419419
return &response, nil
@@ -422,20 +422,20 @@ func (a *API) CreateCodespace(ctx context.Context, user *User, repository *Repos
422422
func (a *API) DeleteCodespace(ctx context.Context, user *User, token, codespaceName string) error {
423423
req, err := http.NewRequest(http.MethodDelete, githubAPI+"/vscs_internal/user/"+user.Login+"/codespaces/"+codespaceName, nil)
424424
if err != nil {
425-
return fmt.Errorf("error creating request: %v", err)
425+
return fmt.Errorf("error creating request: %w", err)
426426
}
427427

428428
req.Header.Set("Authorization", "Bearer "+token)
429429
resp, err := a.do(ctx, req, "/vscs_internal/user/*/codespaces/*")
430430
if err != nil {
431-
return fmt.Errorf("error making request: %v", err)
431+
return fmt.Errorf("error making request: %w", err)
432432
}
433433
defer resp.Body.Close()
434434

435435
if resp.StatusCode > http.StatusAccepted {
436436
b, err := ioutil.ReadAll(resp.Body)
437437
if err != nil {
438-
return fmt.Errorf("error reading response body: %v", err)
438+
return fmt.Errorf("error reading response body: %w", err)
439439
}
440440
return jsonErrorResponse(b)
441441
}
@@ -450,7 +450,7 @@ type getCodespaceRepositoryContentsResponse struct {
450450
func (a *API) GetCodespaceRepositoryContents(ctx context.Context, codespace *Codespace, path string) ([]byte, error) {
451451
req, err := http.NewRequest(http.MethodGet, githubAPI+"/repos/"+codespace.RepositoryNWO+"/contents/"+path, nil)
452452
if err != nil {
453-
return nil, fmt.Errorf("error creating request: %v", err)
453+
return nil, fmt.Errorf("error creating request: %w", err)
454454
}
455455

456456
q := req.URL.Query()
@@ -460,7 +460,7 @@ func (a *API) GetCodespaceRepositoryContents(ctx context.Context, codespace *Cod
460460
a.setHeaders(req)
461461
resp, err := a.do(ctx, req, "/repos/*/contents/*")
462462
if err != nil {
463-
return nil, fmt.Errorf("error making request: %v", err)
463+
return nil, fmt.Errorf("error making request: %w", err)
464464
}
465465
defer resp.Body.Close()
466466

@@ -470,7 +470,7 @@ func (a *API) GetCodespaceRepositoryContents(ctx context.Context, codespace *Cod
470470

471471
b, err := ioutil.ReadAll(resp.Body)
472472
if err != nil {
473-
return nil, fmt.Errorf("error reading response body: %v", err)
473+
return nil, fmt.Errorf("error reading response body: %w", err)
474474
}
475475

476476
if resp.StatusCode != http.StatusOK {
@@ -479,12 +479,12 @@ func (a *API) GetCodespaceRepositoryContents(ctx context.Context, codespace *Cod
479479

480480
var response getCodespaceRepositoryContentsResponse
481481
if err := json.Unmarshal(b, &response); err != nil {
482-
return nil, fmt.Errorf("error unmarshaling response: %v", err)
482+
return nil, fmt.Errorf("error unmarshaling response: %w", err)
483483
}
484484

485485
decoded, err := base64.StdEncoding.DecodeString(response.Content)
486486
if err != nil {
487-
return nil, fmt.Errorf("error decoding content: %v", err)
487+
return nil, fmt.Errorf("error decoding content: %w", err)
488488
}
489489

490490
return decoded, nil

cmd/ghcs/code.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func code(codespaceName string, useInsiders bool) error {
4242

4343
user, err := apiClient.GetUser(ctx)
4444
if err != nil {
45-
return fmt.Errorf("error getting user: %v", err)
45+
return fmt.Errorf("error getting user: %w", err)
4646
}
4747

4848
if codespaceName == "" {
@@ -51,7 +51,7 @@ func code(codespaceName string, useInsiders bool) error {
5151
if err == errNoCodespaces {
5252
return err
5353
}
54-
return fmt.Errorf("error choosing codespace: %v", err)
54+
return fmt.Errorf("error choosing codespace: %w", err)
5555
}
5656
codespaceName = codespace.Name
5757
}

0 commit comments

Comments
 (0)