aboutsummaryrefslogtreecommitdiffstats
path: root/src/run
diff options
context:
space:
mode:
authorJonas Maier <jonas@x77.dev>2026-03-09 18:41:11 +0100
committerJonas Maier <jonas@x77.dev>2026-03-09 18:41:11 +0100
commit91250e99f113fa754f40d1d26afd774bbb25a438 (patch)
tree024b085da57503f1d4bc2d9ad426dbedbba285ad /src/run
parent48bb048d75c50baceba4dccd6c5dc1fff23a72fc (diff)
downloadpish-91250e99f113fa754f40d1d26afd774bbb25a438.tar.gz
correct symlinking
Diffstat (limited to 'src/run')
-rw-r--r--src/run/mod.rs17
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(())
}