1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-05 23:46:56 +00:00
kyverno/pkg/engine/jmespath/utils.go

33 lines
1,005 B
Go
Raw Normal View History

package jmespath
import (
"fmt"
"math"
"reflect"
)
func validateArg(f string, arguments []interface{}, index int, expectedType reflect.Kind) (reflect.Value, error) {
if index >= len(arguments) {
return reflect.Value{}, formatError(argOutOfBoundsError, f, index+1, len(arguments))
}
if arguments[index] == nil {
return reflect.Value{}, formatError(invalidArgumentTypeError, f, index+1, expectedType.String())
}
arg := reflect.ValueOf(arguments[index])
if arg.Type().Kind() != expectedType {
return reflect.Value{}, formatError(invalidArgumentTypeError, f, index+1, expectedType.String())
}
return arg, nil
}
func intNumber(number float64) (int, error) {
if math.IsInf(number, 0) || math.IsNaN(number) || math.Trunc(number) != number {
return 0, fmt.Errorf("expected an integer number but got: %g", number)
}
intNumber := int(number)
if float64(intNumber) != number {
return 0, fmt.Errorf("number is outside the range of integer numbers: %g", number)
}
return intNumber, nil
}