Skip to main content

opencode_ralph_loop_cli/output/
ndjson.rs

1use serde_json::json;
2
3use crate::output::{FileEntry, Report, Summary};
4
5pub fn print_entry(entry: &FileEntry) {
6    match serde_json::to_string(entry) {
7        Ok(line) => println!("{}", line),
8        Err(e) => eprintln!("ERROR: failed to serialize NDJSON entry: {e}"),
9    }
10}
11
12pub fn print_summary(summary: &Summary, plugin_version: &str) {
13    let obj = json!({
14        "type": "summary",
15        "created": summary.created,
16        "updated": summary.updated,
17        "skipped": summary.skipped,
18        "modified": summary.modified,
19        "missing": summary.missing,
20        "removed": summary.removed,
21        "cli_version": env!("CARGO_PKG_VERSION"),
22        "plugin_version": plugin_version,
23    });
24    println!("{}", obj);
25}
26
27pub fn print_report(report: &Report) {
28    for entry in &report.files {
29        print_entry(entry);
30    }
31    print_summary(&report.summary, &report.plugin_version);
32}