Implemented prompt expansion

This commit is contained in:
2025-03-09 03:30:03 -04:00
parent 90a188d4b2
commit 58abe3bc3d
13 changed files with 430 additions and 23 deletions

View File

@@ -8,7 +8,8 @@ pub fn cd(node: Node, shenv: &mut ShEnv) -> ShResult<()> {
let dir_raw = argv_iter.next().map(|arg| shenv.input_slice(arg.span()).into()).unwrap_or(std::env::var("HOME")?);
let dir = PathBuf::from(&dir_raw);
std::env::set_current_dir(dir)?;
shenv.vars_mut().export("PWD",&dir_raw);
let new_dir = std::env::current_dir()?;
shenv.vars_mut().export("PWD",new_dir.to_str().unwrap());
shenv.set_code(0);
}
Ok(())

View File

@@ -6,9 +6,9 @@ pub fn export(node: Node, shenv: &mut ShEnv) -> ShResult<()> {
let mut argv_iter = argv.into_iter();
argv_iter.next(); // Ignore 'export'
while let Some(arg) = argv_iter.next() {
let arg_raw = shenv.input_slice(arg.span()).to_string();
let arg_raw = arg.as_raw(shenv);
if let Some((var,val)) = arg_raw.split_once('=') {
shenv.vars_mut().export(var, val);
shenv.vars_mut().export(var, &clean_string(val));
} else {
eprintln!("Expected an assignment in export args, found this: {}", arg_raw)
}