Skip to main content

tracevault_cli/commands/
stats.rs

1use std::fs;
2use std::path::Path;
3
4pub fn show_stats(project_root: &Path) -> Result<(), Box<dyn std::error::Error>> {
5    let sessions_dir = project_root.join(".tracevault").join("sessions");
6    if !sessions_dir.exists() {
7        println!("No sessions found. Run `tracevault init` first.");
8        return Ok(());
9    }
10
11    let mut total_sessions = 0;
12    let mut total_events = 0;
13
14    for entry in fs::read_dir(&sessions_dir)? {
15        let entry = entry?;
16        if entry.file_type()?.is_dir() {
17            total_sessions += 1;
18            let events_path = entry.path().join("events.jsonl");
19            if events_path.exists() {
20                let content = fs::read_to_string(&events_path)?;
21                total_events += content.lines().count();
22            }
23        }
24    }
25
26    println!("TraceVault Stats");
27    println!("================");
28    println!("Sessions:     {total_sessions}");
29    println!("Total events: {total_events}");
30
31    Ok(())
32}