aboutsummaryrefslogtreecommitdiffstats
path: root/src/run
diff options
context:
space:
mode:
authorJonas Maier <jonas@x77.dev>2026-03-09 20:49:53 +0100
committerJonas Maier <jonas@x77.dev>2026-03-09 20:49:53 +0100
commit5d8d9f07669cdc8ac17c866edb6a8c07bbe4221c (patch)
treef37429eadff223b4381361b7994b6a9840f00f4e /src/run
parent93e5286946b5ed3e6c27a4ef6f1b457a1f6bebc7 (diff)
downloadpish-5d8d9f07669cdc8ac17c866edb6a8c07bbe4221c.tar.gz
variable default value
Diffstat (limited to 'src/run')
-rw-r--r--src/run/mod.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/run/mod.rs b/src/run/mod.rs
index c7414a8..e041066 100644
--- a/src/run/mod.rs
+++ b/src/run/mod.rs
@@ -305,7 +305,11 @@ impl Executor {
impl parse::Expander for Executor {
type Error = ExecError;
- fn expand_var(&mut self, var: BString) -> Result<BString, Self::Error> {
+ fn expand_var(
+ &mut self,
+ var: BString,
+ default: Option<BString>,
+ ) -> Result<BString, Self::Error> {
if var.is_empty() {
return Err(ExecError::UnknownVariable(var));
}
@@ -331,7 +335,10 @@ impl parse::Expander for Executor {
match std::env::var_os(OsStr::from_bytes(&var)) {
Some(val) => Ok(val.as_bytes().to_vec()),
- None => Err(ExecError::UnknownVariable(var)),
+ None => match default {
+ Some(d) => Ok(d),
+ None => Err(ExecError::UnknownVariable(var)),
+ },
}
}