use eyre::Result;
use crate::cli::args::BackendArg;
use crate::config::Config;
use crate::config::config_file::ConfigFile;
#[derive(Debug, usage_rs::Args)]
#[usage(visible_aliases = ["add", "create"], example(r###"mise tool-alias set ripgrep aqua:BurntSushi/ripgrep
mise tool-alias set node project 20"###), verbatim_doc_comment)]
pub(super) struct ToolAliasSet {
#[usage(value_name = "TOOL")]
pub tool: BackendArg,
pub alias: String,
pub value: Option<String>,
}
impl ToolAliasSet {
pub(super) async fn run(self) -> Result<()> {
let mut global_config = Config::get().await?.global_config()?;
match &self.value {
None => global_config.set_backend_alias(&self.tool, &self.alias)?,
Some(val) => global_config.set_alias(&self.tool, &self.alias, val)?,
}
global_config.save()
}
}