diff options
| author | Jonas Maier <jonas@x77.dev> | 2026-03-06 20:57:54 +0100 |
|---|---|---|
| committer | Jonas Maier <jonas@x77.dev> | 2026-03-06 20:57:54 +0100 |
| commit | 74341fb63625f9a3ee73833f347a9fc12ef31710 (patch) | |
| tree | 66fe9a21b855532907618cb2a586915ec750b3df /src/run | |
| parent | 5e77d3c8283f8087c595466897b06700c9296639 (diff) | |
| download | pish-74341fb63625f9a3ee73833f347a9fc12ef31710.tar.gz | |
make shell tell you which variable is unbound
Diffstat (limited to 'src/run')
| -rw-r--r-- | src/run/mod.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/run/mod.rs b/src/run/mod.rs index ba37061..1880e8d 100644 --- a/src/run/mod.rs +++ b/src/run/mod.rs @@ -8,7 +8,7 @@ use crate::*; mod builtin; enum ExecError { - UnknownVariable, + UnknownVariable(BString), ExecError(i32), } @@ -206,7 +206,7 @@ impl<'a> parse::Expander for Executor<'a> { fn expand_var(&mut self, var: BString) -> Result<BString, Self::Error> { match std::env::var_os(OsStr::from_bytes(&var)) { Some(val) => Ok(val.as_bytes().to_vec()), - None => Err(ExecError::UnknownVariable), + None => Err(ExecError::UnknownVariable(var)), } } @@ -246,7 +246,9 @@ pub fn run(se: &mut Session, cmd: Vec<u8>) { let status_string = match result { Ok(_) => String::new(), - Err(ExecError::UnknownVariable) => String::from("unbound variable"), + Err(ExecError::UnknownVariable(var)) => { + format!("unbound variable: {}", String::from_utf8_lossy(&var)) + } Err(ExecError::ExecError(i)) => i.to_string(), }; |
