Skip to main content

forge_guard/reports/
json.rs

1//! JSON report generation.
2
3use super::ReportGenerator;
4use crate::core::{AuditResult, ForgeGuardError};
5use std::path::Path;
6
7/// JSON report generator.
8pub struct JsonReport;
9
10impl ReportGenerator for JsonReport {
11    fn generate(&self, result: &AuditResult) -> Result<String, ForgeGuardError> {
12        Ok(serde_json::to_string_pretty(result)?)
13    }
14
15    fn extension(&self) -> &'static str {
16        "json"
17    }
18}
19
20/// Write audit result as JSON to a file.
21pub fn write_report(result: &AuditResult, path: &Path) -> Result<(), ForgeGuardError> {
22    let json = serde_json::to_string_pretty(result)?;
23    std::fs::write(path, json)?;
24    Ok(())
25}