diff options
Diffstat (limited to 'src/run/mod.rs')
| -rw-r--r-- | src/run/mod.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/run/mod.rs b/src/run/mod.rs index 8c36f91..da62778 100644 --- a/src/run/mod.rs +++ b/src/run/mod.rs @@ -62,6 +62,15 @@ impl Executor { command.stdout(Stdio::from(stdout)); } + if let Some(sr) = self.se.lock().unwrap().socket_running.as_ref() { + let my_path = std::env::var_os("PATH").expect("no PATH - seriously?"); + let mut new_path = sr.path().as_os_str().as_bytes().to_vec(); + new_path.push(b':'); + new_path.extend_from_slice(my_path.as_bytes()); + command.env("PATH", OsStr::from_bytes(&new_path)); + command.env("PISH_SOCKET", sr.socket_path().as_os_str()); + } + let child = match command.spawn() { Ok(c) => c, Err(e) => { @@ -185,7 +194,13 @@ impl Executor { } fn execute_fun_decl(&mut self, fd: parse::FunDecl<PostExpansion>) -> Result<(), ExecError> { - self.se.lock().unwrap().funs.insert(fd.name, *fd.body.body); + self.se + .lock() + .unwrap() + .funs + .insert(fd.name.clone(), *fd.body.body); + crate::export_fun::create_function_hook(self.se.clone(), &fd.name); + // TODO: very ugly to ad-hoc keep export stuff & session data in sync here Ok(()) } |
