tracevault_cli/commands/
stats.rs1use 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}