aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/whirl_prompt/src/builtins/constants.rs3
-rw-r--r--crates/whirl_prompt/src/builtins/mod.rs6
-rw-r--r--crates/whirl_prompt/src/builtins/structures.rs2
-rw-r--r--crates/whirl_prompt/src/lib.rs2
4 files changed, 12 insertions, 1 deletions
diff --git a/crates/whirl_prompt/src/builtins/constants.rs b/crates/whirl_prompt/src/builtins/constants.rs
index 15e7ff2..1fad9ce 100644
--- a/crates/whirl_prompt/src/builtins/constants.rs
+++ b/crates/whirl_prompt/src/builtins/constants.rs
@@ -2,8 +2,9 @@
// SPDX-License-Identifier: GPL-3.0-only
pub const FILES: [&str; 2] = ["README.rst", "Config.toml"];
-pub const HELPABLES_BUILTINS: [&str; 8] = [
+pub const HELPABLES_BUILTINS: [&str; 9] = [
"cat - display the contents of a present file",
+ "clear - clear the display (standard out)",
"config - manipulate the configuration",
"echo - display a line of predefined text",
"exit - end the process",
diff --git a/crates/whirl_prompt/src/builtins/mod.rs b/crates/whirl_prompt/src/builtins/mod.rs
index 96a2c76..59dbe48 100644
--- a/crates/whirl_prompt/src/builtins/mod.rs
+++ b/crates/whirl_prompt/src/builtins/mod.rs
@@ -106,3 +106,9 @@ pub fn builtin_fetch() -> i32 {
0
}
+
+pub fn builtin_clear() -> i32 {
+ println!("\x1B[2J\x1B[1;1H");
+
+ 0
+}
diff --git a/crates/whirl_prompt/src/builtins/structures.rs b/crates/whirl_prompt/src/builtins/structures.rs
index 39d3510..48eebaa 100644
--- a/crates/whirl_prompt/src/builtins/structures.rs
+++ b/crates/whirl_prompt/src/builtins/structures.rs
@@ -13,6 +13,7 @@ pub enum BuiltIn {
Cat,
Config,
Fetch,
+ Clear,
}
impl FromStr for BuiltIn {
type Err = ();
@@ -28,6 +29,7 @@ impl FromStr for BuiltIn {
"cat" => Ok(Self::Cat),
"config" => Ok(Self::Config),
"fetch" => Ok(Self::Fetch),
+ "clear" => Ok(Self::Clear),
_ => Err(()),
}
}
diff --git a/crates/whirl_prompt/src/lib.rs b/crates/whirl_prompt/src/lib.rs
index e2cafbb..3da4840 100644
--- a/crates/whirl_prompt/src/lib.rs
+++ b/crates/whirl_prompt/src/lib.rs
@@ -35,6 +35,7 @@ use whirl_config::Config;
use crate::{
builtins::{
builtin_cat,
+ builtin_clear,
builtin_config,
builtin_echo,
builtin_fetch,
@@ -106,6 +107,7 @@ impl Prompt {
Ok(BuiltIn::Cat) => builtin_cat(&c.args),
Ok(BuiltIn::Config) => builtin_config(&c.args),
Ok(BuiltIn::Fetch) => builtin_fetch(),
+ Ok(BuiltIn::Clear) => builtin_clear(),
_ => {
println!("wsh: command not found: {}", &c.keyword);
1