in pkg/cli/flags.go [412:445]
func (cl *CommandLineInterface) RegexFlagOnFlagSet(flagSet *pflag.FlagSet, name string, shorthand *string, defaultValue *string, description string) {
invalidInputMsg := fmt.Sprintf("Invalid regex input for --%s.", name)
regexProcessor := func(val interface{}) error {
if val == nil {
return nil
}
switch v := val.(type) {
case *string:
regexVal, err := regexp.Compile(*v)
if err != nil {
return fmt.Errorf("%s Unable to compile the regex", invalidInputMsg)
}
cl.Flags[name] = regexVal
case *regexp.Regexp:
return nil
default:
return fmt.Errorf("%s Input type is unsupported", invalidInputMsg)
}
return nil
}
regexValidator := func(val interface{}) error {
if val == nil {
return nil
}
switch val.(type) {
case *regexp.Regexp:
return nil
default:
return fmt.Errorf("%s Processing failed", invalidInputMsg)
}
}
cl.StringFlagOnFlagSet(flagSet, name, shorthand, defaultValue, description, regexProcessor, regexValidator)
}