aboutsummaryrefslogtreecommitdiffstats
path: root/src/run/builtin.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/run/builtin.rs')
-rw-r--r--src/run/builtin.rs27
1 files changed, 26 insertions, 1 deletions
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<BString, crate::parse::Command<PostExpansion>>,
- 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<Mutex<Session>>,
+ 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(())
+ }
+}