vantage_cmd/
expr_data_source.rs1use ciborium::Value as CborValue;
8use vantage_core::Result;
9use vantage_expressions::{
10 Expression, defer_execute, execute_by_resolving,
11 traits::datasource::{DataSource, ExprDataSource},
12 traits::expressive::DeferredFn,
13};
14
15use crate::cmd::Cmd;
16
17impl DataSource for Cmd {}
18
19impl ExprDataSource<CborValue> for Cmd {
20 async fn execute(&self, expr: &Expression<CborValue>) -> Result<CborValue> {
21 execute_by_resolving(
24 expr,
25 |t| CborValue::Text(t.to_string()),
26 |_| async { Ok(CborValue::Null) },
27 )
28 .await
29 }
30
31 fn defer(&self, expr: Expression<CborValue>) -> DeferredFn<CborValue> {
32 defer_execute(self, expr)
33 }
34}