in pkg/cli/flags.go [234:272]
func (cl *CommandLineInterface) ByteQuantityFlagOnFlagSet(flagSet *pflag.FlagSet, name string, shorthand *string, defaultValue *bytequantity.ByteQuantity, description string) {
invalidInputMsg := fmt.Sprintf("Invalid input for --%s. A valid example is 16gb. ", name)
byteQuantityProcessor := func(val interface{}) error {
if val == nil {
return nil
}
switch byteQuantityInput := val.(type) {
case *string:
bq, err := bytequantity.ParseToByteQuantity(*byteQuantityInput)
if err != nil {
return fmt.Errorf(invalidInputMsg+"Can't parse byte quantity %s.", *byteQuantityInput)
}
cl.Flags[name] = &bq
case *bytequantity.ByteQuantity:
return nil
default:
return fmt.Errorf(invalidInputMsg + "Input type is unsupported.")
}
return nil
}
byteQuantityValidator := func(val interface{}) error {
if val == nil {
return nil
}
switch val.(type) {
case *bytequantity.ByteQuantity:
return nil
default:
return fmt.Errorf(invalidInputMsg + "Processing failed.")
}
}
var stringDefaultValue *string
if defaultValue != nil {
stringDefaultValue = cl.StringMe(defaultValue.StringGiB())
} else {
stringDefaultValue = nil
}
cl.StringFlagOnFlagSet(flagSet, name, shorthand, stringDefaultValue, description, byteQuantityProcessor, byteQuantityValidator)
}