From 537529cb77cce9992436ad55b0e4c3ac33230ded Mon Sep 17 00:00:00 2001 From: steven-omaha <35634100+steven-omaha@users.noreply.github.com> Date: Wed, 1 Feb 2023 16:48:22 +0100 Subject: [PATCH] fix error message on quitting review --- src/core.rs | 1 - src/review.rs | 19 +++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/core.rs b/src/core.rs index 6de0e61..600b96c 100644 --- a/src/core.rs +++ b/src/core.rs @@ -24,7 +24,6 @@ pub struct Pacdef { groups: HashSet, } -// TODO review impl Pacdef { #[must_use] pub fn new(args: ArgMatches, config: Config, groups: HashSet) -> Self { diff --git a/src/review.rs b/src/review.rs index 3120522..8d040c7 100644 --- a/src/review.rs +++ b/src/review.rs @@ -1,7 +1,7 @@ use std::io::{self, stdin, stdout, Read, Write}; use std::rc::Rc; -use anyhow::{bail, Result}; +use anyhow::Result; use termios::*; use crate::backend::{Backend, ToDoPerBackend}; @@ -56,7 +56,10 @@ pub(crate) fn review( let mut actions = vec![]; for package in packages { println!("{}: {package}", backend.get_section()); - get_action_for_package(package, &groups, &mut actions, &*backend)?; + match get_action_for_package(package, &groups, &mut actions, &*backend)? { + ContinueWithReview::Yes => continue, + ContinueWithReview::No => return Ok(()), + } } reviews.0.push((backend, actions)); } @@ -88,7 +91,7 @@ fn get_action_for_package( groups: &[Rc], reviews: &mut Vec, backend: &dyn Backend, -) -> Result<()> { +) -> Result { loop { match ask_user_action_for_package()? { ReviewIntention::AsDependency => { @@ -110,11 +113,15 @@ fn get_action_for_package( } ReviewIntention::Invalid => (), ReviewIntention::Skip => break, - // TODO custom return type - ReviewIntention::Quit => bail!("user wants to quit"), + ReviewIntention::Quit => return Ok(ContinueWithReview::No), } } - Ok(()) + Ok(ContinueWithReview::Yes) +} + +enum ContinueWithReview { + Yes, + No, } fn ask_user_action_for_package() -> Result {