Skip to content

Commit 13c993f

Browse files
committed
cli/compose/loader: merge: use errors.Join
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
1 parent 8b6f23d commit 13c993f

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

cli/compose/loader/merge.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package loader
55

66
import (
77
"cmp"
8+
"errors"
89
"fmt"
910
"reflect"
1011
"slices"
@@ -28,22 +29,26 @@ func (s *specials) Transformer(t reflect.Type) func(dst, src reflect.Value) erro
2829
func merge(configs []*types.Config) (*types.Config, error) {
2930
base := configs[0]
3031
for _, override := range configs[1:] {
32+
var errs []error
3133
if services, err := mergeServices(base.Services, override.Services); err != nil {
32-
return nil, fmt.Errorf("cannot merge services from %s: %w", override.Filename, err)
34+
errs = append(errs, fmt.Errorf("cannot merge services: %w", err))
3335
} else {
3436
base.Services = services
3537
}
3638
if err := mergo.Map(&base.Volumes, &override.Volumes, mergo.WithOverride); err != nil {
37-
return nil, fmt.Errorf("cannot merge volumes from %s: %w", override.Filename, err)
39+
errs = append(errs, fmt.Errorf("cannot merge volumes: %w", err))
3840
}
3941
if err := mergo.Map(&base.Networks, &override.Networks, mergo.WithOverride); err != nil {
40-
return nil, fmt.Errorf("cannot merge networks from %s: %w", override.Filename, err)
42+
errs = append(errs, fmt.Errorf("cannot merge networks: %w", err))
4143
}
4244
if err := mergo.Map(&base.Secrets, &override.Secrets, mergo.WithOverride); err != nil {
43-
return nil, fmt.Errorf("cannot merge secrets from %s: %w", override.Filename, err)
45+
errs = append(errs, fmt.Errorf("cannot merge secrets: %w", err))
4446
}
4547
if err := mergo.Map(&base.Configs, &override.Configs, mergo.WithOverride); err != nil {
46-
return nil, fmt.Errorf("cannot merge configs from %s: %w", override.Filename, err)
48+
errs = append(errs, fmt.Errorf("cannot merge configs: %w", err))
49+
}
50+
if err := errors.Join(errs...); err != nil {
51+
return nil, errors.Join(fmt.Errorf("failed to merge file %s", override.Filename), err)
4752
}
4853
}
4954
return base, nil

0 commit comments

Comments
 (0)