opencode_ralph_loop_cli/output/
ndjson.rs1use 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}