aboutsummaryrefslogtreecommitdiffstats
path: root/src/run/builtin.rs
diff options
context:
space:
mode:
authorJonas Maier <jonas@x77.dev>2026-05-12 21:27:52 +0200
committerJonas Maier <jonas@x77.dev>2026-05-12 21:27:52 +0200
commit116b0ac3c99fd317d3800637ca3f88f4d3874c1b (patch)
tree29982dbac0ed23275c960ff1be24600e7468cbf6 /src/run/builtin.rs
parent0e5d95663aaac8b7368c82290476694b561536d3 (diff)
downloadpish-116b0ac3c99fd317d3800637ca3f88f4d3874c1b.tar.gz
variable refactor: export builtin
Diffstat (limited to 'src/run/builtin.rs')
-rw-r--r--src/run/builtin.rs25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/run/builtin.rs b/src/run/builtin.rs
index e928d8b..c8224c0 100644
--- a/src/run/builtin.rs
+++ b/src/run/builtin.rs
@@ -461,7 +461,7 @@ impl Builtin for var {
}
let se = session.lock().unwrap();
if let Some(val) = se.vars.lookup(&args[0]) {
- stdout.write_all(val.as_slice())?;
+ stdout.write_all(val.as_ref())?;
Ok(())
} else {
Err(Error::Exit(1))
@@ -965,3 +965,26 @@ impl Builtin for logo {
Ok(())
}
}
+
+#[derive(Copy, Clone)]
+pub struct export;
+
+impl Builtin for export {
+ fn name(&self) -> &str {
+ "export"
+ }
+
+ fn io(
+ &self,
+ session: Arc<Mutex<Session>>,
+ args: &[BString],
+ _stdin: &mut dyn Read,
+ _stdout: &mut dyn Write,
+ ) -> Result {
+ let mut session = session.lock().unwrap();
+ for v in args.iter() {
+ session.vars.allow_export(&v, true);
+ }
+ Ok(())
+ }
+}