Add 'log' cli command

This commit is contained in:
Joscha 2022-01-08 00:37:55 +01:00
parent 3e2fa54213
commit 0484eda859
8 changed files with 213 additions and 1 deletions

View file

@ -8,7 +8,7 @@ use directories::ProjectDirs;
use structopt::StructOpt;
use crate::eval::{self, DateRange, Entry, EntryMode};
use crate::files::arguments::{CliIdent, CliRange};
use crate::files::arguments::{CliDate, CliIdent, CliRange};
use crate::files::{self, FileSource, Files, ParseError};
use self::error::Error;
@ -18,6 +18,7 @@ mod cancel;
mod done;
mod error;
mod layout;
mod log;
mod print;
mod show;
@ -57,6 +58,11 @@ pub enum Command {
#[structopt(required = true)]
entries: Vec<usize>,
},
/// Edits or creates a log entry
Log {
#[structopt(default_value = "today")]
date: String,
},
/// Reformats all loaded files
Fmt,
}
@ -162,6 +168,12 @@ fn run_command(
let layout = find_layout(files, &entries, range, now);
print::print(&layout);
}
Some(Command::Log { date }) => {
match parse_eval_arg("date", date, |date: CliDate| date.eval((), now.date())) {
Some(date) => log::log(files, date)?,
None => process::exit(1),
};
}
Some(Command::Fmt) => files.mark_all_dirty(),
}
Ok(())