From 7b634ac1b057ede338f34b3b5bbf81a2152195bc Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Wed, 4 Feb 2026 15:45:40 +0000 Subject: [PATCH] Initial upload: GitPulse - Developer Productivity Analyzer CLI tool --- src/export/json.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/export/json.rs diff --git a/src/export/json.rs b/src/export/json.rs new file mode 100644 index 0000000..2cbc567 --- /dev/null +++ b/src/export/json.rs @@ -0,0 +1,34 @@ +use crate::models::AnalysisResult; +use anyhow::{Context, Result}; +use serde_json; +use std::fs::File; +use std::io::Write; +use std::path::PathBuf; + +pub fn export_json(result: &AnalysisResult, output: Option) -> Result<()> { + let json = serde_json::to_string_pretty(result) + .context("Failed to serialize to JSON")?; + + if let Some(path) = output { + let mut file = File::create(&path).context("Failed to create output file")?; + file.write_all(json.as_bytes()) + .context("Failed to write to output file")?; + } else { + println!("{}", json); + } + Ok(()) +} + +pub fn export_json_compact(result: &AnalysisResult, output: Option) -> Result<()> { + let json = serde_json::to_string(result) + .context("Failed to serialize to JSON")?; + + if let Some(path) = output { + let mut file = File::create(&path).context("Failed to create output file")?; + file.write_all(json.as_bytes()) + .context("Failed to write to output file")?; + } else { + println!("{}", json); + } + Ok(()) +}