From ff642cc8c8dfc49ad6ab2fdd9812452c5637b872 Mon Sep 17 00:00:00 2001 From: Joscha Date: Sat, 8 Jan 2022 01:01:49 +0100 Subject: [PATCH] Specify --date via CliDate --- src/cli.rs | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/cli.rs b/src/cli.rs index 4bb98ac..15d5290 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -28,8 +28,8 @@ pub struct Opt { #[structopt(short, long, parse(from_os_str))] file: Option, /// Overwrite the current date - #[structopt(short, long)] - date: Option, + #[structopt(short, long, default_value = "t")] + date: String, /// Range of days to focus on #[structopt(short, long, default_value = "t-2d--t+13d")] range: String, @@ -79,15 +79,6 @@ fn load_files(opt: &Opt, files: &mut Files) -> result::Result<(), files::Error> files.load(&file) } -fn find_now(opt: &Opt, files: &Files) -> NaiveDateTime { - let now = files.now().naive_local(); - if let Some(date) = opt.date { - date.and_time(now.time()) - } else { - now - } -} - fn find_entries(files: &Files, range: DateRange) -> Result, Error> { Ok(files.eval(EntryMode::Relevant, range)?) } @@ -188,7 +179,14 @@ pub fn run() { process::exit(1); } - let now = find_now(&opt, &files); + let now = files.now().naive_local(); + let today = match parse_eval_arg("--date", &opt.date, |date: CliDate| { + date.eval((), now.date()) + }) { + Some(date) => date, + None => process::exit(1), + }; + let now = today.and_time(now.time()); let range = match parse_eval_arg("--range", &opt.range, |range: CliRange| { range.eval((), now.date())