From 86fad60ef2b217cb975983d0d08edf1dcf4ec7cf Mon Sep 17 00:00:00 2001 From: dyknon Date: Sun, 13 Jul 2025 22:42:28 +0900 Subject: Initial commit --- args.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 args.go (limited to 'args.go') diff --git a/args.go b/args.go new file mode 100644 index 0000000..7c4b3d7 --- /dev/null +++ b/args.go @@ -0,0 +1,56 @@ +package main + +import ( + "strings" + "encoding/json" + "gopkg.in/yaml.v2" + "gopkg.in/alecthomas/kingpin.v2" + "github.com/prometheus/prometheus/model/relabel" +) + +func jsonDump(v any) string{ + j, err := json.Marshal(v) + if err != nil{ + return "!!error" + } + return string(j) +} + +type srcListA []string +// kingpin.Value +func (self *srcListA) String() string{ + return jsonDump(self) +} +func (self *srcListA) Set(arg string) error{ + *self = append(*self, arg) + return nil +} +// kingpin.remainderArg +func (*srcListA) IsCumulative() bool{ + return true +} +func argSrcList(s kingpin.Settings) *[]string{ + ret := []string{} + s.SetValue((*srcListA)(&ret)) + return &ret +} + +type relabelA map[string]*[]*relabel.Config +// kingpin.Value +func (self relabelA) String() string{ + return jsonDump(self) +} +func (self relabelA) Set(val string) error{ + va := strings.SplitN(val, "=", 2) + self[va[0]] = &[]*relabel.Config{} + return yaml.UnmarshalStrict(([]byte)(va[1]), self[va[0]]) +} +// kingpin.repeatableFlag +func (relabelA) IsCumulative() bool{ + return true +} +func argRelabel(s kingpin.Settings) map[string]*[]*relabel.Config{ + ret := make(map[string]*[]*relabel.Config) + s.SetValue((relabelA)(ret)) + return ret +} -- cgit v1.2.3