From 14c645dd969d377d8f49c40e1863e6aafe85754f Mon Sep 17 00:00:00 2001 From: Markus Pesch Date: Sun, 27 Aug 2023 18:53:24 +0200 Subject: [PATCH] fix(dockerCompose): add Volume.MergeFirstWin() --- pkg/domain/dockerCompose/config.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/pkg/domain/dockerCompose/config.go b/pkg/domain/dockerCompose/config.go index 6962bb5..1f01967 100644 --- a/pkg/domain/dockerCompose/config.go +++ b/pkg/domain/dockerCompose/config.go @@ -1129,6 +1129,25 @@ func (v *Volume) Equal(equalable Equalable) bool { } } +func (v *Volume) MergeFirstWin(volume *Volume) { + switch { + case v == nil && volume == nil: + fallthrough + case v != nil && volume == nil: + return + + // WARN: It's not possible to change the memory pointer v *Volume to a new + // initialized Volume without returning the volume it self. + // + // case v == nil && volume != nil: + // v = NewVolume() + // fallthrough + + default: + v.mergeFirstWinExternal(volume.External) + } +} + func (v *Volume) MergeLastWin(volume *Volume) { switch { case v == nil && volume == nil: @@ -1148,6 +1167,13 @@ func (v *Volume) MergeLastWin(volume *Volume) { } } +func (v *Volume) mergeFirstWinExternal(external bool) { + if v.External { + return + } + v.External = true +} + func (v *Volume) mergeLastWinExternal(external bool) { if v.External != external { v.External = external