lowfat 0.1.0

CLI binary for lowfat
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(())
}