mirror of https://github.com/docker/docs.git
85 lines
1.7 KiB
Go
85 lines
1.7 KiB
Go
package drivers
|
|
|
|
import "github.com/docker/machine/libmachine/mcnflag"
|
|
|
|
// CheckDriverOptions implements DriverOptions and is used to validate flag parsing
|
|
type CheckDriverOptions struct {
|
|
FlagsValues map[string]interface{}
|
|
CreateFlags []mcnflag.Flag
|
|
InvalidFlags []string
|
|
}
|
|
|
|
func (o *CheckDriverOptions) String(key string) string {
|
|
for _, flag := range o.CreateFlags {
|
|
if flag.String() == key {
|
|
f, ok := flag.(mcnflag.StringFlag)
|
|
if !ok {
|
|
o.InvalidFlags = append(o.InvalidFlags, flag.String())
|
|
}
|
|
|
|
value, present := o.FlagsValues[key].(string)
|
|
if present {
|
|
return value
|
|
}
|
|
return f.Value
|
|
}
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
func (o *CheckDriverOptions) StringSlice(key string) []string {
|
|
for _, flag := range o.CreateFlags {
|
|
if flag.String() == key {
|
|
f, ok := flag.(mcnflag.StringSliceFlag)
|
|
if !ok {
|
|
o.InvalidFlags = append(o.InvalidFlags, flag.String())
|
|
}
|
|
|
|
value, present := o.FlagsValues[key].([]string)
|
|
if present {
|
|
return value
|
|
}
|
|
return f.Value
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (o *CheckDriverOptions) Int(key string) int {
|
|
for _, flag := range o.CreateFlags {
|
|
if flag.String() == key {
|
|
f, ok := flag.(mcnflag.IntFlag)
|
|
if !ok {
|
|
o.InvalidFlags = append(o.InvalidFlags, flag.String())
|
|
}
|
|
|
|
value, present := o.FlagsValues[key].(int)
|
|
if present {
|
|
return value
|
|
}
|
|
return f.Value
|
|
}
|
|
}
|
|
|
|
return 0
|
|
}
|
|
|
|
func (o *CheckDriverOptions) Bool(key string) bool {
|
|
for _, flag := range o.CreateFlags {
|
|
if flag.String() == key {
|
|
_, ok := flag.(mcnflag.BoolFlag)
|
|
if !ok {
|
|
o.InvalidFlags = append(o.InvalidFlags, flag.String())
|
|
}
|
|
}
|
|
}
|
|
|
|
value, present := o.FlagsValues[key].(bool)
|
|
if present {
|
|
return value
|
|
}
|
|
return false
|
|
}
|