mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
38 lines
1.1 KiB
Rust
38 lines
1.1 KiB
Rust
use crate::argparse::{DescriptionMod, Modification};
|
|
use failure::Fallible;
|
|
use taskchampion::TaskMut;
|
|
use termcolor::WriteColor;
|
|
|
|
/// Apply the given modification
|
|
pub(super) fn apply_modification<W: WriteColor>(
|
|
w: &mut W,
|
|
task: &mut TaskMut,
|
|
modification: &Modification,
|
|
) -> Fallible<()> {
|
|
match modification.description {
|
|
DescriptionMod::Set(ref description) => task.set_description(description.clone())?,
|
|
DescriptionMod::Prepend(ref description) => {
|
|
task.set_description(format!("{} {}", description, task.get_description()))?
|
|
}
|
|
DescriptionMod::Append(ref description) => {
|
|
task.set_description(format!("{} {}", task.get_description(), description))?
|
|
}
|
|
DescriptionMod::None => {}
|
|
}
|
|
|
|
if let Some(ref status) = modification.status {
|
|
task.set_status(status.clone())?;
|
|
}
|
|
|
|
if let Some(true) = modification.active {
|
|
task.start()?;
|
|
}
|
|
|
|
if let Some(false) = modification.active {
|
|
task.stop()?;
|
|
}
|
|
|
|
write!(w, "modified task {}\n", task.get_uuid())?;
|
|
|
|
Ok(())
|
|
}
|