...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package flags
17
18 import (
19 "fmt"
20 "strings"
21
22 "github.com/pkg/errors"
23 )
24
25
26 type MapStringStringFlag struct {
27 Values map[string]string
28 }
29
30
31 func (s *MapStringStringFlag) String() string {
32 z := []string{}
33 for x, y := range s.Values {
34 z = append(z, fmt.Sprintf("%s=%s", x, y))
35 }
36 return strings.Join(z, ",")
37 }
38
39
40 func (s *MapStringStringFlag) Set(value string) error {
41 if s.Values == nil {
42 s.Values = map[string]string{}
43 }
44 for _, p := range strings.Split(value, ",") {
45 fields := strings.Split(p, "=")
46 if len(fields) != 2 {
47 return errors.Errorf("%s is incorrectly formatted! should be key=value[,key2=value2]", p)
48 }
49 s.Values[fields[0]] = fields[1]
50 }
51 return nil
52 }
53
54
55 func (s *MapStringStringFlag) ToMapStringString() map[string]string {
56 return s.Values
57 }
58
59
60 func NewMapStringStringFlag() MapStringStringFlag {
61 return MapStringStringFlag{Values: map[string]string{}}
62 }
63