feat: add guts for handling outputs and rendering them

This commit is contained in:
Stevan Freeborn committed 2026-09-04 16:59:38 -05:00
1 parent bfe779cf9a
commit 03c1c3329f
2 files changed
+91

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
use serde::Serialize;
use crate::{CliError, CliResult};
#[derive(Debug, Serialize)]
struct ErrorBody<'a> {
pub code: i32,
pub message: &'a str,
}
#[derive(Debug, Serialize)]
struct ErrorEnvelope<'a> {
pub error: ErrorBody<'a>,
}
pub fn render_json<T: Serialize>(value: &T, pretty: bool) -> CliResult<String> {
if pretty {
serde_json::to_string_pretty(value).map_err(|_| CliError::runtime("Failed to serialize output"))
} else {
serde_json::to_string(value).map_err(|_| CliError::runtime("Failed to serialize output"))
}
}
pub fn render_error(err: &CliError, pretty: bool) -> CliResult<String> {
let envelope = ErrorEnvelope {
error: ErrorBody {
code: err.code,
message: &err.message,
},
};
render_json(&envelope, pretty)
}