From d97be3123b8e24fc84bed5fc7dda05ce84ee0e1d Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Mon, 18 Dec 2023 08:24:28 -0700 Subject: [PATCH] add -v/--verbose --- src/main.rs | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 720d872..e999850 100644 --- a/src/main.rs +++ b/src/main.rs @@ -25,6 +25,9 @@ struct Flags { #[arg(short = 'c', long = "clock")] clock: bool, + + #[arg(short = 'v', long = "verbose")] + verbose: bool, } fn main() { @@ -33,7 +36,7 @@ fn main() { clock(&flags.f, &flags.clock).unwrap(); add(&flags.f, &flags.add, &flags.tag).unwrap(); - log(&flags.f, &flags.log, &flags.since).unwrap(); + log(&flags.f, &flags.log, &flags.since, &flags.verbose).unwrap(); } fn clock(f: &String, clock: &bool) -> Result<(), String> { @@ -70,21 +73,34 @@ struct LogX { x: String, } -fn log(f: &String, enabled: &bool, since: &Option) -> Result<(), String> { +fn log(f: &String, enabled: &bool, since: &Option, verbose: &bool) -> Result<(), String> { if !enabled { return Ok(()); } let since = parse_time(since)?; + if *verbose { + eprintln!("since = {} ({})", system_time_to_unix_seconds(&since), timestamp(&system_time_to_unix_seconds(&since))); + } + let tsheet = load(&f)?; let tsheet = tsheet.since(since); let tsheet = tsheet.sorted(); + if *verbose { + eprintln!("tsheet = {:?}", &tsheet); + } let mut result = vec![]; let mut curr = Log{t: "".to_string(), d: 0.0, xs: vec![]}; for i in 0..tsheet.xs.len() { let x = &tsheet.xs[i]; + if *verbose { + eprintln!("{} != {}?", &curr.t, x.timestamp()); + } if curr.t != x.timestamp() { if curr.xs.len() > 0 { + if *verbose { + eprintln!("push {:?}", &curr.xs); + } result.push(curr.clone()); } curr.xs.truncate(0); @@ -97,6 +113,9 @@ fn log(f: &String, enabled: &bool, since: &Option) -> Result<(), String> } else if i > 0 { d = ((tsheet.xs[i].t - tsheet.xs[i-1].t) as f32 / (60.0*60.0)) as f32; } + if *verbose { + eprintln!("d={} x='{}'", &x.x, &d); + } match x.x.len() { 0 => {}, _ => { @@ -106,6 +125,9 @@ fn log(f: &String, enabled: &bool, since: &Option) -> Result<(), String> }; } if curr.xs.len() > 0 { + if *verbose { + eprintln!("push {:?} (final)", &curr.xs); + } result.push(curr.clone()); } for i in result.iter_mut() { @@ -238,14 +260,22 @@ impl X { } fn timestamp(&self) -> String { - let dt = Local.timestamp_opt(self.t, 0).unwrap(); - dt.format("%Y-%m-%d").to_string() + timestamp(&self.t) } } +fn system_time_to_unix_seconds(st: &SystemTime) -> i64 { + st.duration_since(UNIX_EPOCH).unwrap().as_secs() as i64 +} + +fn timestamp(t: &i64) -> String { + let dt = Local.timestamp_opt(*t, 0).unwrap(); + dt.format("%Y-%m-%d").to_string() +} + fn new_x(t: SystemTime, x: String, tag: String) -> X { X{ - t: t.duration_since(UNIX_EPOCH).unwrap().as_secs() as i64, + t: system_time_to_unix_seconds(&t), x: x, tag: tag, }