cargo-mate 1.8.0

Rust development companion that enhances cargo with intelligent workflows, state management, performance optimization, and comprehensive project monitoring.
Documentation
use anyhow::Result;
use colored::*;
use crate::captain::captain_log;
use crate::cmd::smune::LogAction;
pub fn handle_log(action: LogAction) -> Result<()> {
    let mut log = crate::captain::captain_log::CaptainLog::new()?;
    match action {
        LogAction::Add { message, tags } => {
            log.log(&message, tags)?;
        }
        LogAction::Search { query } => {
            let results = log.search(&query);
            if results.is_empty() {
                println!("No matching log entries found");
            } else {
                println!("Found {} entries:", results.len());
                for entry in results {
                    println!(
                        "  {} - {}", entry.timestamp.format("%Y-%m-%d %H:%M:%S"), entry
                        .message
                    );
                }
            }
        }
        LogAction::Timeline { days } => {
            let days = days.to_owned().try_into().unwrap();
            log.show_timeline(days)?;
        }
        LogAction::Export { path, format } => {
            let fmt = match format.as_str() {
                "json" => captain_log::ExportFormat::Json,
                "html" => captain_log::ExportFormat::Html,
                _ => captain_log::ExportFormat::Markdown,
            };
            log.export(&path, fmt)?;
        }
        LogAction::Analyze => {
            let analysis = log.analyze();
            analysis.display();
        }
        LogAction::Track { command } => {
            println!("🔍 Starting enhanced tracking for: {}", command.cyan());
            let session_id = format!(
                "{}-{:x}", command.replace(" ", "_"), chrono::Utc::now().timestamp()
            );
            match crate::cmd::utils::run_tracked_command(&command, &session_id) {
                Ok(_) => println!("✅ Command tracked successfully"),
                Err(e) => eprintln!("❌ Tracking failed: {}", e),
            }
        }
    }
    Ok(())
}