@@ -28,26 +28,22 @@ func (s *specials) Transformer(t reflect.Type) func(dst, src reflect.Value) erro
2828func merge (configs []* types.Config ) (* types.Config , error ) {
2929 base := configs [0 ]
3030 for _ , override := range configs [1 :] {
31- var err error
32- base . Services , err = mergeServices ( base . Services , override .Services )
33- if err != nil {
34- return base , fmt . Errorf ( "cannot merge services from %s: %w" , override . Filename , err )
31+ if services , err := mergeServices ( base . Services , override . Services ); err != nil {
32+ return nil , fmt . Errorf ( "cannot merge services from %s: %w" , override .Filename , err )
33+ } else {
34+ base . Services = services
3535 }
36- base .Volumes , err = mergeVolumes (base .Volumes , override .Volumes )
37- if err != nil {
38- return base , fmt .Errorf ("cannot merge volumes from %s: %w" , override .Filename , err )
36+ 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 )
3938 }
40- base .Networks , err = mergeNetworks (base .Networks , override .Networks )
41- if err != nil {
42- return base , fmt .Errorf ("cannot merge networks from %s: %w" , override .Filename , err )
39+ 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 )
4341 }
44- base .Secrets , err = mergeSecrets (base .Secrets , override .Secrets )
45- if err != nil {
46- return base , fmt .Errorf ("cannot merge secrets from %s: %w" , override .Filename , err )
42+ 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 )
4744 }
48- base .Configs , err = mergeConfigs (base .Configs , override .Configs )
49- if err != nil {
50- return base , fmt .Errorf ("cannot merge configs from %s: %w" , override .Filename , err )
45+ 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 )
5147 }
5248 }
5349 return base , nil
@@ -78,7 +74,7 @@ func mergeServices(base, override []types.ServiceConfig) ([]types.ServiceConfig,
7874 for _ , overrideService := range override {
7975 if baseService , ok := baseServices [overrideService .Name ]; ok {
8076 if err := mergo .Merge (& baseService , & overrideService , mergeOpts ... ); err != nil {
81- return base , fmt .Errorf ("cannot merge service %s: %w" , overrideService .Name , err )
77+ return nil , fmt .Errorf ("cannot merge service %s: %w" , overrideService .Name , err )
8278 }
8379 baseServices [overrideService .Name ] = baseService
8480 continue
@@ -284,23 +280,3 @@ func mergeUint64(dst, src reflect.Value) error {
284280 }
285281 return nil
286282}
287-
288- func mergeVolumes (base , override map [string ]types.VolumeConfig ) (map [string ]types.VolumeConfig , error ) {
289- err := mergo .Map (& base , & override , mergo .WithOverride )
290- return base , err
291- }
292-
293- func mergeNetworks (base , override map [string ]types.NetworkConfig ) (map [string ]types.NetworkConfig , error ) {
294- err := mergo .Map (& base , & override , mergo .WithOverride )
295- return base , err
296- }
297-
298- func mergeSecrets (base , override map [string ]types.SecretConfig ) (map [string ]types.SecretConfig , error ) {
299- err := mergo .Map (& base , & override , mergo .WithOverride )
300- return base , err
301- }
302-
303- func mergeConfigs (base , override map [string ]types.ConfigObjConfig ) (map [string ]types.ConfigObjConfig , error ) {
304- err := mergo .Map (& base , & override , mergo .WithOverride )
305- return base , err
306- }
0 commit comments