diff --git a/cli/src/invocation/cmd/modify.rs b/cli/src/invocation/cmd/modify.rs index 6f17f0dba..c3fee9a40 100644 --- a/cli/src/invocation/cmd/modify.rs +++ b/cli/src/invocation/cmd/modify.rs @@ -1,5 +1,5 @@ use crate::argparse::{Filter, Modification}; -use crate::invocation::{apply_modification, filtered_tasks}; +use crate::invocation::{apply_modification, filtered_tasks, summarize_task}; use taskchampion::Replica; use termcolor::WriteColor; @@ -12,7 +12,11 @@ pub(crate) fn execute( for task in filtered_tasks(replica, &filter)? { let mut task = task.into_mut(replica); - apply_modification(w, &mut task, &modification)?; + apply_modification(&mut task, &modification)?; + + let task = task.into_immut(); + let summary = summarize_task(replica, &task)?; + writeln!(w, "modified task {}", summary)?; } Ok(()) @@ -51,7 +55,7 @@ mod test { assert_eq!( w.into_string(), - format!("modified task {}\n", task.get_uuid()) + format!("modified task 1 - new description\n") ); } } diff --git a/cli/src/invocation/mod.rs b/cli/src/invocation/mod.rs index 985c4d99e..80c49db75 100644 --- a/cli/src/invocation/mod.rs +++ b/cli/src/invocation/mod.rs @@ -2,7 +2,7 @@ use crate::argparse::{Command, Subcommand}; use crate::settings::Settings; -use taskchampion::{Replica, Server, ServerConfig, StorageConfig, Uuid}; +use taskchampion::{Replica, Server, ServerConfig, StorageConfig, Task, Uuid}; use termcolor::{ColorChoice, StandardStream}; mod cmd; @@ -149,3 +149,14 @@ fn get_writer() -> StandardStream { ColorChoice::Never }) } + +/// Summarize a task in a single line +fn summarize_task(replica: &mut Replica, task: &Task) -> anyhow::Result { + let ws = replica.working_set()?; + let uuid = task.get_uuid(); + if let Some(id) = ws.by_uuid(uuid) { + Ok(format!("{} - {}", id, task.get_description())) + } else { + Ok(format!("{} - {}", uuid, task.get_description())) + } +} diff --git a/cli/src/invocation/modify.rs b/cli/src/invocation/modify.rs index b67620788..cbbb65e1c 100644 --- a/cli/src/invocation/modify.rs +++ b/cli/src/invocation/modify.rs @@ -1,11 +1,9 @@ use crate::argparse::{DescriptionMod, Modification}; use std::convert::TryInto; use taskchampion::TaskMut; -use termcolor::WriteColor; /// Apply the given modification -pub(super) fn apply_modification( - w: &mut W, +pub(super) fn apply_modification( task: &mut TaskMut, modification: &Modification, ) -> anyhow::Result<()> { @@ -42,7 +40,5 @@ pub(super) fn apply_modification( task.remove_tag(&tag)?; } - writeln!(w, "modified task {}", task.get_uuid())?; - Ok(()) }