Skip to main content

agent_image_diff/output/
json.rs

1use crate::output::compact::CompactDiffResult;
2use crate::region::DiffResult;
3use anyhow::Result;
4use std::io::Write;
5
6pub fn write_json(
7    result: &DiffResult,
8    verbose: bool,
9    pretty: bool,
10    writer: &mut impl Write,
11) -> Result<()> {
12    if verbose {
13        if pretty {
14            serde_json::to_writer_pretty(&mut *writer, result)?;
15        } else {
16            serde_json::to_writer(&mut *writer, result)?;
17        }
18    } else {
19        let compact = CompactDiffResult::from(result);
20        if pretty {
21            serde_json::to_writer_pretty(&mut *writer, &compact)?;
22        } else {
23            serde_json::to_writer(&mut *writer, &compact)?;
24        }
25    }
26    writeln!(writer)?;
27    Ok(())
28}