feat: render cli dry-run previews

This commit is contained in:
Evandro Fonseca Junior committed 2026-03-26 19:34:25 -03:00
1 parent 14e406b3ba
commit d9408fc09a
1 file changed
+66 -1
+66 -1
View File
@@ -303,7 +303,72 @@ fn main() -> anyhow::Result<()> {
}
fn render_execution_preview(cli: &Cli) -> String {
format!("DRY RUN {}", render_command_summary(cli))
let preview = execution_preview(
cli,
&execution_stub(&execution_contract(&plan_command(cli))),
);
match (cli.format, preview) {
(OutputFormat::Text, ExecutionPreview::SummaryOnly { command }) => {
format!("DRY RUN {}", command)
}
(
OutputFormat::Text,
ExecutionPreview::HttpPreview {
method,
url,
api_key_present,
..
},
) => format!(
"DRY RUN {} {} api_key_present={}",
method, url, api_key_present
),
(
OutputFormat::Text,
ExecutionPreview::LocalPreview {
action,
target,
effect,
},
) => format!("DRY RUN {} target={} effect={}", action, target, effect),
(OutputFormat::Json, ExecutionPreview::SummaryOnly { command }) => {
format!(r#"{{"kind":"summary","command":"{}"}}"#, command)
}
(
OutputFormat::Json,
ExecutionPreview::HttpPreview {
method,
url,
api_key_present,
body,
},
) => format!(
r#"{{"kind":"http","method":"{}","url":"{}","api_key_present":{},"body":{}}}"#,
method,
url,
api_key_present,
render_json_body(body.as_deref())
),
(
OutputFormat::Json,
ExecutionPreview::LocalPreview {
action,
target,
effect,
},
) => format!(
r#"{{"kind":"local","action":"{}","target":"{}","effect":"{}"}}"#,
action, target, effect
),
}
}
fn render_json_body(body: Option<&str>) -> String {
match body {
Some(body) => format!(r#""{}""#, body),
None => "null".to_owned(),
}
}
fn render_command_summary(cli: &Cli) -> String {