func()

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)
}