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