Skip to main content

spreadsheet_mcp/cli/
output.rs

1use crate::cli::OutputFormat;
2use crate::response_prune::prune_non_structural_empties;
3use anyhow::{Result, bail};
4use serde_json::Value;
5
6pub fn emit_value(value: &Value, format: OutputFormat, compact: bool, quiet: bool) -> Result<()> {
7    if matches!(format, OutputFormat::Csv) {
8        bail!("csv output is not implemented yet for spreadsheet-cli")
9    }
10
11    let mut value = value.clone();
12    prune_non_structural_empties(&mut value);
13
14    let stdout = std::io::stdout();
15    let mut handle = stdout.lock();
16    if compact || quiet {
17        serde_json::to_writer(&mut handle, &value)?;
18    } else {
19        serde_json::to_writer_pretty(&mut handle, &value)?;
20    }
21    use std::io::Write;
22    handle.write_all(b"\n")?;
23    Ok(())
24}