diff --git a/src/app.rs b/src/app.rs index 3c66244..d4d0f06 100644 --- a/src/app.rs +++ b/src/app.rs @@ -656,22 +656,20 @@ impl App { } } - pub fn task_done(&mut self) { + pub fn task_done(&mut self) -> Result<(), String> { if self.tasks.len() == 0 { - return + return Ok(()); } let selected = self.state.selected().unwrap_or_default(); let task_id = self.tasks[selected].id().unwrap_or_default(); let output = Command::new("task") .arg("done") .arg(format!("{}", task_id)) - .output() - .expect( - &format!( - "Cannot run `task done` for task `{}`. Check documentation for more information", - task_id - )[..], - ); + .output(); + match output { + Ok(_) => Ok(()), + Err(_) => Err(format!("Cannot run `task done` for task `{}`. Check documentation for more information", task_id)) + } } pub fn task_undo(&self) -> Result<(), String> { diff --git a/src/main.rs b/src/main.rs index 65e95dd..c5c9a27 100644 --- a/src/main.rs +++ b/src/main.rs @@ -54,7 +54,13 @@ fn main() -> Result<(), Box> { Key::Char('r') => app.update(), Key::Down | Key::Char('j') => app.next(), Key::Up | Key::Char('k') => app.previous(), - Key::Char('d') => app.task_done(), + Key::Char('d') => match app.task_done() { + Ok(_) => (), + Err(e) => { + app.mode = AppMode::TaskError; + app.error = e; + } + }, Key::Char('x') => match app.task_delete() { Ok(_) => (), Err(e) => {