func Int32()

in registry/storage/driver/internal/parse/parse.go [28:65]


func Int32(parameters map[string]any, name string, defaultt, minimum, maximum int32) (int32, error) {
	var rv int32
	switch value := parameters[name].(type) {
	case string:
		v, err := strconv.ParseInt(value, 10, 32)
		if err != nil {
			return defaultt, fmt.Errorf("cannot parse %q string as int32: %w", name, err)
		}
		rv = int32(v)
	case int32:
		rv = value
	case int:
		if value > math.MaxInt32 || value < math.MinInt32 {
			return defaultt, fmt.Errorf("value %d for %q exceeds int32 range", value, name)
		}
		rv = int32(value)
	case int64:
		if value > math.MaxInt32 || value < math.MinInt32 {
			return defaultt, fmt.Errorf("value %d for %q exceeds int32 range", value, name)
		}
		rv = int32(value)
	case float64:
		if value > math.MaxInt32 || value < math.MinInt32 {
			return defaultt, fmt.Errorf("value %f for %q exceeds int32 range", value, name)
		}
		rv = int32(value)
	case nil:
		return defaultt, nil
	default:
		return defaultt, fmt.Errorf("cannot parse %q with type %T as int32", name, value)
	}

	if rv < minimum || rv > maximum {
		return 0, fmt.Errorf("the %s %d parameter should be a number between %d and %d (inclusive)", name, rv, minimum, maximum)
	}

	return rv, nil
}