From b96eecee1644224674119782e4c810deb24a2ba2 Mon Sep 17 00:00:00 2001 From: Michael Taufen Date: Thu, 16 Nov 2017 14:47:39 -0800 Subject: [PATCH] omitempty Kubernetes-commit: 617b49858fad83a72ce072356bb2808a259943c5 --- pkg/util/flag/BUILD | 1 + .../langle_separated_map_string_string.go | 15 ++++------ ...langle_separated_map_string_string_test.go | 29 ++++++++++++++----- pkg/util/flag/map_string_bool.go | 15 ++++------ pkg/util/flag/map_string_bool_test.go | 29 ++++++++++++++----- pkg/util/flag/map_string_string.go | 15 ++++------ pkg/util/flag/map_string_string_test.go | 29 ++++++++++++++----- pkg/util/flag/omitempty.go | 24 +++++++++++++++ 8 files changed, 106 insertions(+), 51 deletions(-) create mode 100644 pkg/util/flag/omitempty.go diff --git a/pkg/util/flag/BUILD b/pkg/util/flag/BUILD index 9cf2715c6..57ab4058d 100644 --- a/pkg/util/flag/BUILD +++ b/pkg/util/flag/BUILD @@ -30,6 +30,7 @@ go_library( "map_string_bool.go", "map_string_string.go", "namedcertkey_flag.go", + "omitempty.go", "string_flag.go", "tristate.go", ], diff --git a/pkg/util/flag/langle_separated_map_string_string.go b/pkg/util/flag/langle_separated_map_string_string.go index c2b950e77..bf8dbfb9b 100644 --- a/pkg/util/flag/langle_separated_map_string_string.go +++ b/pkg/util/flag/langle_separated_map_string_string.go @@ -38,10 +38,6 @@ func NewLangleSeparatedMapStringString(m *map[string]string) *LangleSeparatedMap // String implements github.com/spf13/pflag.Value func (m *LangleSeparatedMapStringString) String() string { - if *m.Map == nil { - return "nil" - } - pairs := []string{} for k, v := range *m.Map { pairs = append(pairs, fmt.Sprintf("%s<%s", k, v)) @@ -55,12 +51,6 @@ func (m *LangleSeparatedMapStringString) Set(value string) error { if m.Map == nil { return fmt.Errorf("no target (nil pointer to map[string]string)") } - // allow explicit nil map - if value == "nil" { - *m.Map = nil - m.initialized = true - return nil - } if !m.initialized || *m.Map == nil { // clear default values, or allocate if no existing map *m.Map = make(map[string]string) @@ -85,3 +75,8 @@ func (m *LangleSeparatedMapStringString) Set(value string) error { func (*LangleSeparatedMapStringString) Type() string { return "mapStringString" } + +// Empty implements OmitEmpty +func (m *LangleSeparatedMapStringString) Empty() bool { + return len(*m.Map) == 0 +} diff --git a/pkg/util/flag/langle_separated_map_string_string_test.go b/pkg/util/flag/langle_separated_map_string_string_test.go index fd2ca25a5..80c67c32b 100644 --- a/pkg/util/flag/langle_separated_map_string_string_test.go +++ b/pkg/util/flag/langle_separated_map_string_string_test.go @@ -28,7 +28,7 @@ func TestStringLangleSeparatedMapStringString(t *testing.T) { m *LangleSeparatedMapStringString expect string }{ - {"nil", NewLangleSeparatedMapStringString(&nilMap), "nil"}, + {"nil", NewLangleSeparatedMapStringString(&nilMap), ""}, {"empty", NewLangleSeparatedMapStringString(&map[string]string{}), ""}, {"one key", NewLangleSeparatedMapStringString(&map[string]string{"one": "foo"}), "one