use ciborium::Value as CborValue;
use vantage_core::Result;
use vantage_expressions::{
Expression, defer_execute, execute_by_resolving,
traits::datasource::{DataSource, ExprDataSource},
traits::expressive::DeferredFn,
};
use crate::cmd::Cmd;
impl DataSource for Cmd {}
impl ExprDataSource<CborValue> for Cmd {
async fn execute(&self, expr: &Expression<CborValue>) -> Result<CborValue> {
execute_by_resolving(
expr,
|t| CborValue::Text(t.to_string()),
|_| async { Ok(CborValue::Null) },
)
.await
}
fn defer(&self, expr: Expression<CborValue>) -> DeferredFn<CborValue> {
defer_execute(self, expr)
}
}