func()

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