use color_eyre::eyre::Result;
use crate::config::Config;
use crate::output::Output;
use crate::plugins::PluginName;
#[derive(Debug, clap::Args)]
#[clap(visible_alias = "list", after_long_help = AFTER_LONG_HELP, verbatim_doc_comment)]
pub struct AliasLs {
#[clap()]
pub plugin: Option<PluginName>,
}
impl AliasLs {
pub fn run(self, config: Config, out: &mut Output) -> Result<()> {
for (plugin_name, aliases) in config.get_all_aliases() {
if let Some(plugin) = &self.plugin {
if plugin_name != plugin {
continue;
}
}
for (from, to) in aliases.iter() {
if plugin_name == "node" && from.starts_with("lts/") {
continue;
}
if self.plugin.is_some() {
rtxprintln!(out, "{:20} {}", from, to);
} else {
rtxprintln!(out, "{:20} {:20} {}", plugin_name, from, to);
}
}
}
Ok(())
}
}
static AFTER_LONG_HELP: &str = color_print::cstr!(
r#"<bold><underline>Examples:</underline></bold>
$ <bold>rtx aliases</bold>
node lts-hydrogen 20.0.0
"#
);
#[cfg(test)]
mod tests {
use crate::assert_cli;
#[test]
fn test_alias_ls() {
let stdout = assert_cli!("aliases");
assert!(stdout.contains("my/alias"));
}
}