summaryrefslogtreecommitdiff
path: root/args.go
diff options
context:
space:
mode:
authordyknon <dyknon@r5f.jp>2025-07-13 22:42:28 +0900
committerdyknon <dyknon@r5f.jp>2025-07-13 22:42:28 +0900
commit86fad60ef2b217cb975983d0d08edf1dcf4ec7cf (patch)
tree6c0c8a51b047c9a1f5fb89e159d00be2a0b1aef8 /args.go
Initial commit
Diffstat (limited to 'args.go')
-rw-r--r--args.go56
1 files changed, 56 insertions, 0 deletions
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
+}