ubt_cli/commands/
alias.rs1use std::process;
2
3use crate::config::UbtConfig;
4use crate::error::UbtError;
5use crate::executor::spawn_command;
6
7pub fn cmd_alias(ext_args: &[String], config: Option<&UbtConfig>) -> Result<(), UbtError> {
8 let alias_name = &ext_args[0];
9 let remaining = &ext_args[1..];
10
11 let cmd_str = config
12 .and_then(|cfg| cfg.aliases.get(alias_name))
13 .ok_or_else(|| UbtError::UnknownCommand {
14 name: alias_name.clone(),
15 })?;
16
17 let args_str = remaining.join(" ");
18 let expanded = if cmd_str.contains("{{args}}") {
19 cmd_str.replace("{{args}}", &args_str)
20 } else if remaining.is_empty() {
21 cmd_str.clone()
22 } else {
23 format!("{} {}", cmd_str, args_str)
24 };
25
26 let exit_code = spawn_command(&expanded, None)?;
27 process::exit(exit_code);
28}