From f4d2b541f2dd499044ac428e4c266cf48c91b4d8 Mon Sep 17 00:00:00 2001 From: Jonas Maier Date: Sun, 3 May 2026 16:44:08 +0200 Subject: source builtin --- src/run/builtin.rs | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'src/run/builtin.rs') diff --git a/src/run/builtin.rs b/src/run/builtin.rs index 4a7e332..a52c345 100644 --- a/src/run/builtin.rs +++ b/src/run/builtin.rs @@ -665,7 +665,7 @@ impl Builtin for bind { if args.len() == 0 { let mut dump = |map: &HashMap>, - category: &str| + category: &str| -> std::io::Result<()> { let mut entries: Vec<_> = map.iter().collect(); entries.sort_by_key(|x| x.0); @@ -766,6 +766,8 @@ impl Builtin for exit { break num; }; + println!("bye!\r"); + std::process::exit(exit_code); } @@ -831,3 +833,26 @@ impl Builtin for ct { Ok(()) } } + +#[derive(Copy, Clone)] +pub struct source; + +impl Builtin for source { + fn name(&self) -> &str { + "source" + } + + fn io( + &self, + session: Arc>, + args: &[BString], + _stdin: &mut dyn Read, + _stdout: &mut dyn Write, + ) -> Result { + for file in args.iter() { + // TODO: useful error propagation (?) + super::source(session.clone(), file).map_err(|_| Error::Exit(-1))?; + } + Ok(()) + } +} -- cgit v1.2.3