lc/cli/
aliases.rs

1//! Alias management commands
2
3use crate::cli::AliasCommands;
4use crate::data::config::Config;
5use anyhow::Result;
6
7/// Handle alias-related commands
8pub async fn handle(command: AliasCommands) -> Result<()> {
9    match command {
10        AliasCommands::Add { name, target } => {
11            let mut config = Config::load()?;
12            config.add_alias(name.clone(), target.clone())?;
13            config.save()?;
14            println!("Added alias '{}' -> '{}'", name, target);
15            Ok(())
16        }
17        AliasCommands::Delete { name } => {
18            let mut config = Config::load()?;
19            config.remove_alias(name.clone())?;
20            config.save()?;
21            println!("Removed alias '{}'", name);
22            Ok(())
23        }
24        AliasCommands::List => {
25            let config = Config::load()?;
26            let aliases = config.list_aliases();
27
28            if aliases.is_empty() {
29                println!("No aliases configured");
30            } else {
31                println!("Configured aliases:");
32                for (alias_name, target) in aliases {
33                    println!("  {} -> {}", alias_name, target);
34                }
35            }
36            Ok(())
37        }
38    }
39}