diff --git a/src/arguments.rs b/src/arguments.rs index bcd9b91..f85eed7 100644 --- a/src/arguments.rs +++ b/src/arguments.rs @@ -79,7 +79,7 @@ pub struct StackArgs { #[derive(Debug, Clone, Subcommand)] pub enum StackAction { /// clear stack - clear(EmptyArgs), + clear, } #[derive(Debug, Clone, Args)] @@ -95,7 +95,7 @@ pub struct BookmarkArgs { #[derive(Debug, Clone, Subcommand)] pub enum BookmarkAction { /// list all bookmarks - list(EmptyArgs), + list, /// add a bookmark with `book add ` add(BookmarkSubArgs), @@ -104,7 +104,7 @@ pub enum BookmarkAction { remove(BookmarkSubArgs), /// get bookmarknames for shell completions - completions(EmptyArgs), + completions, } #[derive(Debug, Clone, Args)] @@ -123,7 +123,3 @@ pub struct ConfigArgs { #[arg(short, long)] pub convert: Option, } - -/// empty struct for subcommands with no arguments -#[derive(Debug, Clone, Args)] -pub struct EmptyArgs {} diff --git a/src/main.rs b/src/main.rs index 6a4ed69..6f91e0d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -75,7 +75,6 @@ fn main() -> Result<()> { if res.is_err() { output.push_error(&res.unwrap_err().to_string()); - output.push_command(&"false".to_owned()); } // print output and command @@ -146,7 +145,7 @@ fn handle_pop(args: &PopArgs, config: &Config, stack: &mut Stack, output: &mut O fn handle_stack(args: &StackArgs, config: &Config, stack: &mut Stack, output: &mut Output) -> Result<()> { if args.stack_action.is_some() { match args.stack_action.clone().unwrap() { - StackAction::clear(_) => { + StackAction::clear => { stack.clear_stack()?; output.push_info(&"stack cleared.".to_owned()); return Ok(()); @@ -161,10 +160,10 @@ fn handle_stack(args: &StackArgs, config: &Config, stack: &mut Stack, output: &m fn handle_bookmark(args: &BookmarkArgs, config: &Config, bookmarks: &mut Bookmarks, stack: &mut Stack, output: &mut Output) -> Result<()> { if let Some(action) = &args.bookmark_action { match action { - BookmarkAction::list(_) => list_bookmarks(config, bookmarks, output)?, + BookmarkAction::list => list_bookmarks(config, bookmarks, output)?, BookmarkAction::add(args) => add_bookmarks(args, config, bookmarks, output)?, BookmarkAction::remove(args) => remove_bookmarks(args, config, bookmarks, output)?, - BookmarkAction::completions(_) => println!("echo '{}'", bookmarks.get_bookmarknames()), + BookmarkAction::completions => println!("echo '{}'", bookmarks.get_bookmarknames()), }; } else if args.name.is_some() { // handle `change to bookmark` let path = bookmarks.get_path_by_name(args.name.as_ref().unwrap())?; diff --git a/src/output.rs b/src/output.rs index 98d72c1..0e72dbe 100644 --- a/src/output.rs +++ b/src/output.rs @@ -1,6 +1,7 @@ #![allow(unused)] use clap::builder::EnumValueParser; +use config_parser::RESET_SEQ; use super::config::*; @@ -58,13 +59,18 @@ impl Output { /// format and print styled output /// NOTE - this will execute any commands held by `command` - pub fn print_output(&self, config: Option<&Config>) { + pub fn print_output(&mut self, config: Option<&Config>) { let default = Config::default(); let config = if let Some(value) = config { value } else { &default }; + + if !self.error.is_empty() { + self.push_command(&"false".to_owned()); + } + let mut info: String = self.info.iter().map(|entry| format!("echo '{}'", entry)).collect::>().join(" && "); let mut warning: String = self.warning.iter().map(|entry| format!("echo '{}'", entry)).collect::>().join(" && "); let mut error: String = self.error.iter().map(|entry| format!("echo '{}'", entry)).collect::>().join(" && ");