Skip to content

Commit b883976

Browse files
committed
cli/context/store: use stdlib errors, remove errdefs uses
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
1 parent bfc6aec commit b883976

4 files changed

Lines changed: 49 additions & 23 deletions

File tree

cli/context/store/errors.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package store
2+
3+
import cerrdefs "github.com/containerd/errdefs"
4+
5+
func invalidParameter(err error) error {
6+
if err == nil || cerrdefs.IsInvalidArgument(err) {
7+
return err
8+
}
9+
return invalidParameterErr{err}
10+
}
11+
12+
type invalidParameterErr struct{ error }
13+
14+
func (invalidParameterErr) InvalidParameter() {}
15+
16+
func notFound(err error) error {
17+
if err == nil || cerrdefs.IsNotFound(err) {
18+
return err
19+
}
20+
return notFoundErr{err}
21+
}
22+
23+
type notFoundErr struct{ error }
24+
25+
func (notFoundErr) NotFound() {}
26+
func (e notFoundErr) Unwrap() error {
27+
return e.error
28+
}

cli/context/store/metadatastore.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@ package store
55

66
import (
77
"encoding/json"
8+
"errors"
89
"fmt"
910
"os"
1011
"path/filepath"
1112
"reflect"
1213
"sort"
1314

14-
"github.com/docker/docker/errdefs"
1515
"github.com/fvbommel/sortorder"
1616
"github.com/moby/sys/atomicwriter"
17-
"github.com/pkg/errors"
1817
)
1918

2019
const (
@@ -64,7 +63,7 @@ func parseTypedOrMap(payload []byte, getter TypeGetter) (any, error) {
6463
func (s *metadataStore) get(name string) (Metadata, error) {
6564
m, err := s.getByID(contextdirOf(name))
6665
if err != nil {
67-
return m, errors.Wrapf(err, "context %q", name)
66+
return m, fmt.Errorf("context %q: %w", name, err)
6867
}
6968
return m, nil
7069
}
@@ -74,7 +73,7 @@ func (s *metadataStore) getByID(id contextdir) (Metadata, error) {
7473
bytes, err := os.ReadFile(fileName)
7574
if err != nil {
7675
if errors.Is(err, os.ErrNotExist) {
77-
return Metadata{}, errdefs.NotFound(errors.Wrap(err, "context not found"))
76+
return Metadata{}, notFound(fmt.Errorf("context not found: %w", err))
7877
}
7978
return Metadata{}, err
8079
}
@@ -99,7 +98,7 @@ func (s *metadataStore) getByID(id contextdir) (Metadata, error) {
9998

10099
func (s *metadataStore) remove(name string) error {
101100
if err := os.RemoveAll(s.contextDir(contextdirOf(name))); err != nil {
102-
return errors.Wrapf(err, "failed to remove metadata")
101+
return fmt.Errorf("failed to remove metadata: %w", err)
103102
}
104103
return nil
105104
}
@@ -119,7 +118,7 @@ func (s *metadataStore) list() ([]Metadata, error) {
119118
if errors.Is(err, os.ErrNotExist) {
120119
continue
121120
}
122-
return nil, errors.Wrap(err, "failed to read metadata")
121+
return nil, fmt.Errorf("failed to read metadata: %w", err)
123122
}
124123
res = append(res, c)
125124
}

cli/context/store/store.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@ import (
1010
"bytes"
1111
_ "crypto/sha256" // ensure ids can be computed
1212
"encoding/json"
13+
"errors"
14+
"fmt"
1315
"io"
1416
"net/http"
1517
"path"
1618
"path/filepath"
1719
"strings"
1820

1921
"github.com/docker/cli/internal/lazyregexp"
20-
"github.com/docker/docker/errdefs"
2122
"github.com/opencontainers/go-digest"
22-
"github.com/pkg/errors"
2323
)
2424

2525
const restrictedNamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.+-]+$"
@@ -146,10 +146,10 @@ func (s *ContextStore) CreateOrUpdate(meta Metadata) error {
146146
// Remove deletes the context with the given name, if found.
147147
func (s *ContextStore) Remove(name string) error {
148148
if err := s.meta.remove(name); err != nil {
149-
return errors.Wrapf(err, "failed to remove context %s", name)
149+
return fmt.Errorf("failed to remove context %s: %w", name, err)
150150
}
151151
if err := s.tls.remove(name); err != nil {
152-
return errors.Wrapf(err, "failed to remove context %s", name)
152+
return fmt.Errorf("failed to remove context %s: %w", name, err)
153153
}
154154
return nil
155155
}
@@ -226,7 +226,7 @@ func ValidateContextName(name string) error {
226226
return errors.New(`"default" is a reserved context name`)
227227
}
228228
if !restrictedNameRegEx.MatchString(name) {
229-
return errors.Errorf("context name %q is invalid, names are validated against regexp %q", name, restrictedNamePattern)
229+
return fmt.Errorf("context name %q is invalid, names are validated against regexp %q", name, restrictedNamePattern)
230230
}
231231
return nil
232232
}
@@ -374,7 +374,7 @@ func importTar(name string, s Writer, reader io.Reader) error {
374374
continue
375375
}
376376
if err := isValidFilePath(hdr.Name); err != nil {
377-
return errors.Wrap(err, hdr.Name)
377+
return fmt.Errorf("%s: %w", hdr.Name, err)
378378
}
379379
if hdr.Name == metaFile {
380380
data, err := io.ReadAll(tr)
@@ -400,7 +400,7 @@ func importTar(name string, s Writer, reader io.Reader) error {
400400
}
401401
}
402402
if !importedMetaFile {
403-
return errdefs.InvalidParameter(errors.New("invalid context: no metadata found"))
403+
return invalidParameter(errors.New("invalid context: no metadata found"))
404404
}
405405
return s.ResetTLSMaterial(name, &tlsData)
406406
}
@@ -426,7 +426,7 @@ func importZip(name string, s Writer, reader io.Reader) error {
426426
continue
427427
}
428428
if err := isValidFilePath(zf.Name); err != nil {
429-
return errors.Wrap(err, zf.Name)
429+
return fmt.Errorf("%s: %w", zf.Name, err)
430430
}
431431
if zf.Name == metaFile {
432432
f, err := zf.Open()
@@ -464,7 +464,7 @@ func importZip(name string, s Writer, reader io.Reader) error {
464464
}
465465
}
466466
if !importedMetaFile {
467-
return errdefs.InvalidParameter(errors.New("invalid context: no metadata found"))
467+
return invalidParameter(errors.New("invalid context: no metadata found"))
468468
}
469469
return s.ResetTLSMaterial(name, &tlsData)
470470
}

cli/context/store/tlsstore.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package store
22

33
import (
4+
"fmt"
45
"os"
56
"path/filepath"
67

7-
"github.com/docker/docker/errdefs"
88
"github.com/moby/sys/atomicwriter"
9-
"github.com/pkg/errors"
109
)
1110

1211
const tlsDir = "tls"
@@ -39,24 +38,24 @@ func (s *tlsStore) getData(name, endpointName, filename string) ([]byte, error)
3938
data, err := os.ReadFile(filepath.Join(s.endpointDir(name, endpointName), filename))
4039
if err != nil {
4140
if os.IsNotExist(err) {
42-
return nil, errdefs.NotFound(errors.Errorf("TLS data for %s/%s/%s does not exist", name, endpointName, filename))
41+
return nil, notFound(fmt.Errorf("TLS data for %s/%s/%s does not exist", name, endpointName, filename))
4342
}
44-
return nil, errors.Wrapf(err, "failed to read TLS data for endpoint %s", endpointName)
43+
return nil, fmt.Errorf("failed to read TLS data for endpoint %s: %w", endpointName, err)
4544
}
4645
return data, nil
4746
}
4847

4948
// remove deletes all TLS data for the given context.
5049
func (s *tlsStore) remove(name string) error {
5150
if err := os.RemoveAll(s.contextDir(name)); err != nil {
52-
return errors.Wrapf(err, "failed to remove TLS data")
51+
return fmt.Errorf("failed to remove TLS data: %w", err)
5352
}
5453
return nil
5554
}
5655

5756
func (s *tlsStore) removeEndpoint(name, endpointName string) error {
5857
if err := os.RemoveAll(s.endpointDir(name, endpointName)); err != nil {
59-
return errors.Wrapf(err, "failed to remove TLS data for endpoint %s", endpointName)
58+
return fmt.Errorf("failed to remove TLS data for endpoint %s: %w", endpointName, err)
6059
}
6160
return nil
6261
}
@@ -68,7 +67,7 @@ func (s *tlsStore) listContextData(name string) (map[string]EndpointFiles, error
6867
if os.IsNotExist(err) {
6968
return map[string]EndpointFiles{}, nil
7069
}
71-
return nil, errors.Wrapf(err, "failed to list TLS files for context %s", name)
70+
return nil, fmt.Errorf("failed to list TLS files for context %s: %w", name, err)
7271
}
7372
r := make(map[string]EndpointFiles)
7473
for _, epFS := range epFSs {
@@ -78,7 +77,7 @@ func (s *tlsStore) listContextData(name string) (map[string]EndpointFiles, error
7877
continue
7978
}
8079
if err != nil {
81-
return nil, errors.Wrapf(err, "failed to list TLS files for endpoint %s", epFS.Name())
80+
return nil, fmt.Errorf("failed to list TLS files for endpoint %s: %w", epFS.Name(), err)
8281
}
8382
var files EndpointFiles
8483
for _, fs := range fss {

0 commit comments

Comments
 (0)