github.com/tappoz/packer@v1.0.0-rc1/helper/enumflag/flag.go (about) 1 package enumflag 2 3 import "fmt" 4 5 type enumFlag struct { 6 target *string 7 options []string 8 } 9 10 // New returns a flag.Value implementation for parsing flags with a one-of-a-set value 11 func New(target *string, options ...string) *enumFlag { 12 return &enumFlag{target: target, options: options} 13 } 14 15 func (f *enumFlag) String() string { 16 return *f.target 17 } 18 19 func (f *enumFlag) Set(value string) error { 20 for _, v := range f.options { 21 if v == value { 22 *f.target = value 23 return nil 24 } 25 } 26 27 return fmt.Errorf("expected one of %q", f.options) 28 }