in kubectl-utils/pkg/kel/info.go [32:66]
func (x *Expression) BuildStatusPrinter(ctx context.Context) (InfoFunction, error) {
log := klog.FromContext(ctx)
checkedExpr, err := cel.AstToCheckedExpr(x.AST)
if err != nil {
return nil, fmt.Errorf("parsing CEL ast: %w", err)
}
v := checkedExpr.Expr.ExprKind
switch v := v.(type) {
case *exprpb.Expr_CallExpr:
printFunction := ""
switch v.CallExpr.Function {
case "_==_":
printFunction = "="
case "_>=_":
printFunction = ">="
case "_<=_":
printFunction = "<="
case "_>_":
printFunction = ">"
case "_<_":
printFunction = "<"
default:
klog.Warningf("unhandled function %q", v.CallExpr.Function)
return nil, nil
}
log.V(2).Info("recognized function", "function", printFunction)
return x.buildFunctionPrinterFor(v.CallExpr.Args)
default:
klog.Warningf("unhandled expression kind %T", checkedExpr.Expr.ExprKind)
return nil, nil
}
}