cargo-mate 1.7.6

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::anchor;
use crate::cmd::smune::AnchorAction;
pub fn handle_anchor(action: AnchorAction) -> Result<()> {
    let manager = anchor::AnchorManager::new()?;
    match action {
        AnchorAction::Save { name, message } => {
            let msg = message.unwrap_or_else(|| "Manual anchor point".to_string());
            manager.save(&name, &msg)?;
        }
        AnchorAction::Restore { name } => {
            manager.restore(&name)?;
        }
        AnchorAction::List => {
            let anchors = manager.list()?;
            if anchors.is_empty() {
                println!("No anchors found");
            } else {
                println!("⚓ Saved anchors:");
                for anchor in anchors {
                    anchor.display();
                }
            }
        }
        AnchorAction::Show { name } => {
            manager.show(&name)?;
        }
        AnchorAction::Diff { name } => {
            manager.diff(&name)?;
        }
        AnchorAction::Auto { name, foreground } => {
            if foreground {
                manager.start_auto_update(&name)?;
            } else {
                manager.start_auto_update_background(&name)?;
            }
        }
        AnchorAction::Stop { name } => {
            manager.stop_auto_update(&name)?;
        }
    }
    Ok(())
}