From 747e5148059fbeb3c40269d3c3c7104547dd77f9 Mon Sep 17 00:00:00 2001 From: Nicolas De Loof Date: Tue, 20 Feb 2024 08:36:12 +0100 Subject: [PATCH] merge volumes/networks labels Signed-off-by: Nicolas De Loof --- override/merge.go | 3 +++ override/merge_networks_test.go | 14 +++++++------- override/uncity.go | 16 ++++++++++------ 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/override/merge.go b/override/merge.go index cadf2629..39adc0bc 100644 --- a/override/merge.go +++ b/override/merge.go @@ -41,10 +41,13 @@ var mergeSpecials = map[tree.Path]merger{} func init() { mergeSpecials["networks.*.ipam.config"] = mergeIPAMConfig + mergeSpecials["networks.*.labels"] = mergeToSequence + mergeSpecials["volumes.*.labels"] = mergeToSequence mergeSpecials["services.*.annotations"] = mergeToSequence mergeSpecials["services.*.build"] = mergeBuild mergeSpecials["services.*.build.args"] = mergeToSequence mergeSpecials["services.*.build.additional_contexts"] = mergeToSequence + mergeSpecials["services.*.build.extra_hosts"] = mergeToSequence mergeSpecials["services.*.build.labels"] = mergeToSequence mergeSpecials["services.*.command"] = override mergeSpecials["services.*.depends_on"] = mergeDependsOn diff --git a/override/merge_networks_test.go b/override/merge_networks_test.go index 4603a7a4..98a953ec 100644 --- a/override/merge_networks_test.go +++ b/override/merge_networks_test.go @@ -187,9 +187,9 @@ networks: bar: foo baz: "0" labels: - com.example.description: "Financial transaction network" - com.example.department-new: "New" - com.example.label-with-empty-value: "" + - "com.example.department-new=New" + - "com.example.description=Financial transaction network" + - "com.example.label-with-empty-value=" network2: `, ` services: @@ -219,10 +219,10 @@ networks: bar: foo baz: "0" labels: - com.example.description: "Financial transaction network" - com.example.department: "Finance" - com.example.label-with-empty-value: "" - com.example.department-new: "New" + - "com.example.department=Finance" + - "com.example.description=Financial transaction network" + - "com.example.label-with-empty-value=" + - "com.example.department-new=New" network2: `) } diff --git a/override/uncity.go b/override/uncity.go index d8f29b59..9cbc45f4 100644 --- a/override/uncity.go +++ b/override/uncity.go @@ -107,13 +107,17 @@ func enforceUnicity(value any, p tree.Path) (any, error) { return value, nil } -func keyValueIndexer(y any, _ tree.Path) (string, error) { - value := y.(string) - key, _, found := strings.Cut(value, "=") - if !found { - return value, nil +func keyValueIndexer(y any, p tree.Path) (string, error) { + switch value := y.(type) { + case string: + key, _, found := strings.Cut(value, "=") + if !found { + return value, nil + } + return key, nil + default: + return "", fmt.Errorf("%s: unexpected type %T", p, y) } - return key, nil } func volumeIndexer(y any, p tree.Path) (string, error) {