github.com/weaveworks/common@v0.0.0-20230728070032-dd9e68f319d5/mflagext/listvar.go (about) 1 package mflagext 2 3 import ( 4 "fmt" 5 6 "github.com/weaveworks/common/mflag" 7 ) 8 9 type listOpts struct { 10 value *[]string 11 hasBeenSet bool 12 } 13 14 // ListVar creates an mflag.Var for repeated flags. 15 func ListVar(p *[]string, names []string, value []string, usage string) { 16 *p = value 17 mflag.Var(&listOpts{p, false}, names, usage) 18 } 19 20 // Set implements mflag.Var 21 func (opts *listOpts) Set(value string) error { 22 if opts.hasBeenSet { 23 (*opts.value) = append((*opts.value), value) 24 } else { 25 (*opts.value) = []string{value} 26 opts.hasBeenSet = true 27 } 28 return nil 29 } 30 31 // String implements mflag.Var 32 func (opts *listOpts) String() string { 33 return fmt.Sprintf("%v", []string(*opts.value)) 34 }