diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-03-17 14:56:44 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-03-17 14:56:44 +0800 |
| commit | 2e11849a23de0533b172fe2bb057fc3553a36cc1 (patch) | |
| tree | dedbb6e269198f3d9039e5a5024964e5d995b7a8 /src/systems/cmd/macros.rs | |
| parent | 775b3613f3ece75f7673ea1be6b6ec420c2bb76b (diff) | |
Handle early command output in prepare phase
Diffstat (limited to 'src/systems/cmd/macros.rs')
| -rw-r--r-- | src/systems/cmd/macros.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/systems/cmd/macros.rs b/src/systems/cmd/macros.rs index 5763961..37b041c 100644 --- a/src/systems/cmd/macros.rs +++ b/src/systems/cmd/macros.rs @@ -163,6 +163,11 @@ macro_rules! command_template { } #[macro_export] +/// `cmd_output!` 宏应在命令的 `exec` 函数中使用。 +/// 它负责将执行结果包装成能被指定渲染器匹配的格式。 +/// +/// 注意:该宏不仅是简化输出的工具,更是 JvcsCLI 代码生成流程的必要组成部分。 +/// 因此,所有命令的输出都必须通过此宏返回。 macro_rules! cmd_output { ($t:ty => $v:expr) => {{ let checked_value: $t = $v; @@ -172,3 +177,19 @@ macro_rules! cmd_output { )) }}; } + +#[macro_export] +/// `early_cmd_output!` 宏应在命令的 `prepare` 或 `collect` 函数中使用。 +/// 它负责将执行结果包装成能返回到核心 +/// +/// 注意:该宏不仅是简化输出的工具,更是 JvcsCLI 代码生成流程的必要组成部分。 +/// 因此,所有命令的输出都必须通过此宏返回。 +macro_rules! early_cmd_output { + ($t:ty => $v:expr) => {{ + let checked_value: $t = $v; + Err(crate::systems::cmd::errors::CmdPrepareError::EarlyOutput(( + Box::new(checked_value) as Box<dyn std::any::Any + Send + 'static>, + std::any::TypeId::of::<$t>(), + ))) + }}; +} |
