diff --git a/src/builtin.rs b/src/builtin.rs index 05bd653..37c14cd 100644 --- a/src/builtin.rs +++ b/src/builtin.rs @@ -21,6 +21,7 @@ pub enum Builtin { Headers, Vars, Requests, + Clear, } pub enum ControlFlow { @@ -96,6 +97,11 @@ pub fn handle( } } + Builtin::Clear => { + ctx.clear(); + println!("Session state cleared"); + } + Builtin::Rerun(index) => { if index == 0 { return Err("history indices start at 1".into()); diff --git a/src/help.rs b/src/help.rs index 6e73263..8070d41 100644 --- a/src/help.rs +++ b/src/help.rs @@ -37,6 +37,7 @@ pub fn help_text() -> String { headers history rerun + clear help exit {} diff --git a/src/helper.rs b/src/helper.rs index ea12aee..addc385 100644 --- a/src/helper.rs +++ b/src/helper.rs @@ -6,7 +6,7 @@ use rustyline::{Context, Helper, Result}; const BUILTINS: &[&str] = &[ "GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS", "base", "header", "exit", "help", - "history", "rerun", "set", "unset", "save", "run", "vars", "headers", "requests", + "history", "rerun", "set", "unset", "save", "run", "vars", "headers", "requests", "clear", ]; pub struct ShellHelper; diff --git a/src/parser.rs b/src/parser.rs index a9020a9..b7eb1ae 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -25,7 +25,7 @@ pub fn parse(input: String) -> Result { } "base" | "set" | "unset" | "header" | "headers" | "vars" | "requests" | "save" | "run" - | "help" | "history" | "rerun" => { + | "help" | "history" | "rerun" | "clear" => { let result = parse_builtin(input)?; Ok(Parsed::Builtin(result)) } @@ -174,6 +174,7 @@ fn parse_builtin(line: String) -> Result { } } "help" => Ok(Builtin::Help), + "clear" => Ok(Builtin::Clear), "history" => Ok(Builtin::History), "rerun" => { if tokens.len() != 2 { diff --git a/src/state.rs b/src/state.rs index 7f16906..e556997 100644 --- a/src/state.rs +++ b/src/state.rs @@ -84,6 +84,14 @@ impl ShellState { pub fn remove_variable(&mut self, name: &str) { self.variables.remove(name); } + + pub fn clear(&mut self) { + self.base_url = None; + self.headers.clear(); + self.variables.clear(); + self.last_request = None; + self.saved_requests.clear(); + } } #[cfg(test)]