func()

in confgenerator/config.go [117:165]


func (ve validationError) Error() string {
	switch ve.Tag() {
	case "duration":
		return fmt.Sprintf("%q must be a duration of at least %s", ve.Field(), ve.Param())
	case "endswith":
		return fmt.Sprintf("%q must end with %q", ve.Field(), ve.Param())
	case "experimental":
		return experimentalValidationErrorString(ve)
	case "ip":
		return fmt.Sprintf("%q must be an IP address", ve.Field())
	case "min":
		return fmt.Sprintf("%q must be a minimum of %s", ve.Field(), ve.Param())
	case "multipleof_time":
		return fmt.Sprintf("%q must be a multiple of %s", ve.Field(), ve.Param())
	case "oneof":
		return fmt.Sprintf("%q must be one of [%s]", ve.Field(), ve.Param())
	case "required":
		return fmt.Sprintf("%q is a required field", ve.Field())
	case "required_with":
		return fmt.Sprintf("%q is required when %q is set", ve.Field(), ve.Param())
	case "startsnotwith":
		return fmt.Sprintf("%q must not start with %q", ve.Field(), ve.Param())
	case "startswith":
		return fmt.Sprintf("%q must start with %q", ve.Field(), ve.Param())
	case "url":
		return fmt.Sprintf("%q must be a URL", ve.Field())
	case "excluded_with":
		return fmt.Sprintf("%q cannot be set if one of [%s] is set", ve.Field(), ve.Param())
	case "filter":
		_, err := filter.NewFilter(ve.Value().(string))
		return fmt.Sprintf("%q: %v", ve.Field(), err)
	case "field":
		_, err := filter.NewMember(ve.Value().(string))
		return fmt.Sprintf("%q: %v", ve.Field(), err)
	case "fieldlegacy":
		_, err := filter.NewMemberLegacy(ve.Value().(string))
		return fmt.Sprintf("%q: %v", ve.Field(), err)
	case "distinctfield":
		return fmt.Sprintf("%q specified multiple times", ve.Value().(string))
	case "writablefield":
		return fmt.Sprintf("%q is not a writable field", ve.Value().(string))
	case "winlogchannels":
		// Assume validation has already failed by this point, that is, receiver_version must already be > 1
		channels := ve.Value().([]string)
		return validateWinlogChannels(channels).Error()
	}

	return ve.FieldError.Error()
}