mecha10-cli 0.8.0

Mecha10 CLI tool
Documentation
//! Cache management handler

use crate::paths;
use anyhow::Result;
use mecha10_core::fs_utils::{dir_size, format_size};

/// Handle cache clean command — removes all cached artifacts
pub async fn handle_cache_clean() -> Result<()> {
    let dirs = [
        ("Templates", paths::user::templates_dir()),
        ("Binaries", paths::user::bin_dir()),
    ];

    let mut total_freed = 0u64;
    let mut any_removed = false;

    for (label, dir) in &dirs {
        if dir.exists() {
            let size = dir_size(dir);
            tokio::fs::remove_dir_all(dir).await?;
            println!("  Removed {} ({})", label, format_size(size));
            total_freed += size;
            any_removed = true;
        }
    }

    if any_removed {
        println!();
        println!("Freed {}", format_size(total_freed));
    } else {
        println!("No cached artifacts found.");
    }

    Ok(())
}