From 4a8fc811be95d88e8b0247972d7a21ad28cb2cda Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Tue, 14 Mar 2023 10:53:24 +0200 Subject: [PATCH] pkg/utils: add UnmarshalJSON method to StringSetVal Make it possible to specify values in yaml as an array like conf: - foo - bar Instead of unwieldy map like conf: foo: bar: --- pkg/utils/flags.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkg/utils/flags.go b/pkg/utils/flags.go index 2045bd5fa..47bd3f3df 100644 --- a/pkg/utils/flags.go +++ b/pkg/utils/flags.go @@ -84,6 +84,18 @@ func (a *StringSetVal) String() string { return strings.Join(vals, ",") } +// UnmarshalJSON implements the Unmarshaler interface from "encoding/json" +func (a *StringSetVal) UnmarshalJSON(data []byte) error { + var tmp []string + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + for _, v := range tmp { + (*a)[v] = struct{}{} + } + return nil +} + // StringSliceVal is a Value encapsulating a slice of comma-separated strings type StringSliceVal []string