summaryrefslogtreecommitdiff
path: root/args.go
blob: 7c4b3d7764da19c29225f7f40c16b3d69675905b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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
}