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