Skip to content

Commit d9e789a

Browse files
committed
Use errors.Join to joing errs in sdk resource
1 parent 373bb10 commit d9e789a

File tree

1 file changed

+18
-44
lines changed

1 file changed

+18
-44
lines changed

sdk/resource/auto.go

+18-44
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"context"
88
"errors"
99
"fmt"
10-
"strings"
1110
)
1211

1312
// ErrPartialResource is returned by a detector when complete source
@@ -57,62 +56,37 @@ func Detect(ctx context.Context, detectors ...Detector) (*Resource, error) {
5756
// these errors will be returned. Otherwise, nil is returned.
5857
func detect(ctx context.Context, res *Resource, detectors []Detector) error {
5958
var (
60-
r *Resource
61-
errs detectErrs
62-
err error
59+
r *Resource
60+
err error
61+
e error
6362
)
6463

6564
for _, detector := range detectors {
6665
if detector == nil {
6766
continue
6867
}
69-
r, err = detector.Detect(ctx)
70-
if err != nil {
71-
errs = append(errs, err)
72-
if !errors.Is(err, ErrPartialResource) {
68+
r, e = detector.Detect(ctx)
69+
if e != nil {
70+
err = errors.Join(err, e)
71+
if !errors.Is(e, ErrPartialResource) {
7372
continue
7473
}
7574
}
76-
r, err = Merge(res, r)
77-
if err != nil {
78-
errs = append(errs, err)
75+
r, e = Merge(res, r)
76+
if e != nil {
77+
err = errors.Join(err, e)
7978
}
8079
*res = *r
8180
}
8281

83-
if len(errs) == 0 {
84-
return nil
85-
}
86-
if errors.Is(errs, ErrSchemaURLConflict) {
87-
// If there has been a merge conflict, ensure the resource has no
88-
// schema URL.
89-
res.schemaURL = ""
90-
}
91-
return errs
92-
}
93-
94-
type detectErrs []error
95-
96-
func (e detectErrs) Error() string {
97-
errStr := make([]string, len(e))
98-
for i, err := range e {
99-
errStr[i] = fmt.Sprintf("* %s", err)
100-
}
101-
102-
format := "%d errors occurred detecting resource:\n\t%s"
103-
return fmt.Sprintf(format, len(e), strings.Join(errStr, "\n\t"))
104-
}
82+
if err != nil {
83+
if errors.Is(err, ErrSchemaURLConflict) {
84+
// If there has been a merge conflict, ensure the resource has no
85+
// schema URL.
86+
res.schemaURL = ""
87+
}
10588

106-
func (e detectErrs) Unwrap() error {
107-
switch len(e) {
108-
case 0:
109-
return nil
110-
case 1:
111-
return e[0]
89+
err = fmt.Errorf("error detecting resource: %w", err)
11290
}
113-
return e[1:]
114-
}
115-
116-
func (e detectErrs) Is(target error) bool {
117-
return len(e) != 0 && errors.Is(e[0], target)
91+
return err
11892
}

0 commit comments

Comments
 (0)