proto_cli 0.23.2

A multi-language version manager, a unified toolchain.
use clap::Args;
use proto_core::{load_tool, Id};
use starbase::system;
use starbase_styles::color;
use tracing::info;

#[derive(Args, Clone, Debug)]
pub struct UnaliasArgs {
    #[arg(required = true, help = "ID of tool")]
    id: Id,

    #[arg(required = true, help = "Alias name")]
    alias: String,
}

#[system]
pub async fn unalias(args: ArgsRef<UnaliasArgs>) {
    let mut tool = load_tool(&args.id).await?;

    let value = tool.manifest.aliases.remove(&args.alias);
    tool.manifest.save()?;

    if let Some(version) = value {
        info!(
            "Removed alias {} ({}) from {}",
            color::id(&args.alias),
            color::muted_light(version.to_string()),
            tool.get_name(),
        );
    } else {
        info!(
            "Alias {} not found for {}",
            color::id(&args.alias),
            tool.get_name(),
        );
    }
}