serialization order change to avoid data loss; time tracking command

This commit is contained in:
aaron-jack-manning
2022-08-22 20:27:17 +10:00
parent 6aa3eb4e83
commit a1a1713c28
3 changed files with 75 additions and 21 deletions

View File

@@ -18,7 +18,7 @@ struct Args {
}
#[derive(clap::Subcommand, Debug, PartialEq, Eq)]
#[clap(version, about, author, global_setting=clap::AppSettings::DisableHelpSubcommand)]
#[clap(version, help_short='H', about, author, global_setting=clap::AppSettings::DisableHelpSubcommand)]
enum Command {
/// Create a new task.
New {
@@ -74,6 +74,14 @@ enum Command {
// - which columns to include
// - filters which exclude values
},
/// For tracking time against a note.
Track {
id_or_name : String,
#[clap(short, default_value_t=0)]
hours : u16,
#[clap(short, default_value_t=0)]
minutes : u16,
},
/// For making changes to global configuration.
#[clap(subcommand)]
Config(ConfigCommand),
@@ -227,6 +235,13 @@ fn program() -> Result<(), error::Error> {
}
println!("Updated task {}", colour::id(&id.to_string()));
},
Track { id_or_name, hours, minutes } => {
let id = state.name_or_id_to_id(&id_or_name)?;
let mut task = tasks::Task::load(id, vault_folder, false)?;
let entry = tasks::TimeEntry::new(hours, minutes);
task.data.time_entries.push(entry);
task.save()?;
},
Discard { id_or_name } => {
let id = state.name_or_id_to_id(&id_or_name)?;
let mut task = tasks::Task::load(id, vault_folder, false)?;