in pkg/cli/cli.go [170:219]
func (cl *CommandLineInterface) SetUntouchedFlagValuesToNil() error {
defaultHandlerErrMsg := "Unable to find a default value handler for %v, marking as no default value. This could be an error"
defaultHandlerFlags := []string{}
cl.Command.Flags().VisitAll(func(f *pflag.Flag) {
if !f.Changed {
// If nilDefaults entry for flag is set to false, do not change default
if val := cl.nilDefaults[f.Name]; !val {
return
}
switch v := cl.Flags[f.Name].(type) {
case *int32:
if reflect.ValueOf(*v).IsZero() {
cl.Flags[f.Name] = nil
}
case *int:
if reflect.ValueOf(*v).IsZero() {
cl.Flags[f.Name] = nil
}
case *bytequantity.ByteQuantity:
if v.Quantity == 0 {
cl.Flags[f.Name] = nil
}
case *float64:
if reflect.ValueOf(*v).IsZero() {
cl.Flags[f.Name] = nil
}
case *string:
if reflect.ValueOf(*v).IsZero() {
cl.Flags[f.Name] = nil
}
case *bool:
if reflect.ValueOf(*v).IsZero() {
cl.Flags[f.Name] = nil
}
case *[]string:
if reflect.ValueOf(v).IsZero() {
cl.Flags[f.Name] = nil
}
default:
defaultHandlerFlags = append(defaultHandlerFlags, f.Name)
cl.Flags[f.Name] = nil
}
}
})
if len(defaultHandlerFlags) != 0 {
return fmt.Errorf(defaultHandlerErrMsg, defaultHandlerFlags)
}
return nil
}