20 lines
637 B
Rust
20 lines
637 B
Rust
use crate::prelude::*;
|
|
|
|
pub fn alias(node: Node, shenv: &mut ShEnv) -> ShResult<()> {
|
|
let rule = node.into_rule();
|
|
if let NdRule::Command { argv, redirs: _ } = rule {
|
|
let argv = argv.drop_first();
|
|
let mut argv_iter = argv.into_iter();
|
|
while let Some(arg) = argv_iter.next() {
|
|
let arg_raw = arg.to_string();
|
|
if let Some((alias,body)) = arg_raw.split_once('=') {
|
|
let clean_body = trim_quotes(&body);
|
|
shenv.logic_mut().set_alias(alias, &clean_body);
|
|
} else {
|
|
return Err(ShErr::full(ShErrKind::SyntaxErr, "Expected an assignment in alias args", arg.span().clone()))
|
|
}
|
|
}
|
|
} else { unreachable!() }
|
|
Ok(())
|
|
}
|