1#![warn(missing_docs)]
7
8pub mod types;
9pub mod change_set;
10pub mod file_change;
11pub mod stats;
12pub mod vcs;
13pub mod preview;
14
15use crate::change_set::ChangeSetManager;
16use crate::file_change::FileChangeDetector;
17use crate::preview::ChangePreview;
18use crate::stats::{ChangeStats, ChangeTrend};
19use crate::vcs::VcsIntegration;
20
21pub fn get_change_stats(manager: &ChangeSetManager) -> nargo_types::Result<ChangeStats> {
23 let change_sets = manager.read_change_sets()?;
24 Ok(ChangeStats::from_change_sets(&change_sets))
25}
26
27pub fn analyze_change_trend(manager: &ChangeSetManager, time_period: &str) -> nargo_types::Result<ChangeTrend> {
29 let change_sets = manager.read_change_sets()?;
30 Ok(ChangeTrend::from_change_sets(&change_sets, time_period))
31}
32
33pub fn generate_change_report(manager: &ChangeSetManager, time_period: &str) -> nargo_types::Result<String> {
35 let stats = get_change_stats(manager)?;
36 let trend = analyze_change_trend(manager, time_period)?;
37
38 let mut report = String::new();
39 report.push_str("# Change Report\n\n");
40 report.push_str("## Statistics\n\n");
41 report.push_str(&stats.generate_summary());
42 report.push_str("\n## Trend Analysis\n\n");
43 report.push_str(&trend.generate_summary());
44
45 Ok(report)
46}