aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/run/builtin.rs21
-rw-r--r--src/run/mod.rs2
2 files changed, 22 insertions, 1 deletions
diff --git a/src/run/builtin.rs b/src/run/builtin.rs
index ea7651b..3f89ebb 100644
--- a/src/run/builtin.rs
+++ b/src/run/builtin.rs
@@ -121,10 +121,29 @@ impl Builtin for _type {
stdout: &mut dyn Write,
) -> std::io::Result<()> {
for arg in args {
- let kind = todo!();
+ let kind = "todo";
writeln!(stdout, "{} is {}", String::from_utf8_lossy(arg), kind)?;
}
Ok(())
}
}
+
+pub struct builtins;
+impl Builtin for builtins {
+ fn name(&self) -> &str {
+ "builtins"
+ }
+
+ fn io(
+ &self,
+ _args: &[BString],
+ _stdin: &mut dyn Read,
+ stdout: &mut dyn Write,
+ ) -> std::io::Result<()> {
+ for b in super::BUILTINS {
+ write!(stdout, "{} ", b.name())?;
+ }
+ writeln!(stdout)
+ }
+}
diff --git a/src/run/mod.rs b/src/run/mod.rs
index 5e3b3e7..73011fd 100644
--- a/src/run/mod.rs
+++ b/src/run/mod.rs
@@ -168,6 +168,8 @@ const BUILTINS: &[&'static dyn Builtin] = &[
&builtin::sink("into", false),
&builtin::sink("append", true),
&builtin::from,
+ &builtin::builtins,
+ &builtin::_type,
];
pub struct CommandDispatch {