...
1
16
17 package flag
18
19 import (
20 goflag "flag"
21 "fmt"
22 "strings"
23
24 "github.com/spf13/pflag"
25 )
26
27
28
29 type StringSlice struct {
30 value *[]string
31 changed bool
32 }
33
34 func NewStringSlice(s *[]string) *StringSlice {
35 return &StringSlice{value: s}
36 }
37
38 var _ goflag.Value = &StringSlice{}
39 var _ pflag.Value = &StringSlice{}
40
41 func (s *StringSlice) String() string {
42 if s == nil || s.value == nil {
43 return ""
44 }
45 return strings.Join(*s.value, " ")
46 }
47
48 func (s *StringSlice) Set(val string) error {
49 if s.value == nil {
50 return fmt.Errorf("no target (nil pointer to []string)")
51 }
52 if !s.changed {
53 *s.value = make([]string, 0)
54 }
55 *s.value = append(*s.value, val)
56 s.changed = true
57 return nil
58 }
59
60 func (StringSlice) Type() string {
61 return "sliceString"
62 }
63
View as plain text