use anyhow::Result;
use lowfat_core::config::RunfConfig;
use lowfat_core::db::Db;
pub fn run() -> Result<()> {
let config = RunfConfig::resolve();
let db = Db::open(&config.data_dir)?;
println!("═══════════════════════════════════════════════");
println!(" Runf Token Savings");
println!("═══════════════════════════════════════════════");
println!();
let summary = db.gain_summary()?;
println!(
" commands: {} input: {} output: {} saved: {} savings: {:.1}%",
summary.commands,
summary.input_tokens,
summary.output_tokens,
summary.saved_tokens,
summary.savings_pct
);
println!();
println!("Top commands:");
let top = db.top_commands(10)?;
if top.is_empty() {
println!(" (no data yet)");
} else {
println!(" {:30} {:>6} {:>8} {:>7}", "command", "runs", "saved", "avg_%");
for cmd in &top {
println!(
" {:30} {:>6} {:>8} {:>6.1}%",
cmd.command, cmd.runs, cmd.saved, cmd.avg_pct
);
}
}
Ok(())
}