Compare commits

..

No commits in common. "main" and "v2.1.2" have entirely different histories.
main ... v2.1.2

5 changed files with 8 additions and 48 deletions

2
Cargo.lock generated
View file

@ -384,7 +384,7 @@ dependencies = [
[[package]]
name = "time-track"
version = "2.1.4"
version = "2.1.2"
dependencies = [
"anyhow",
"chrono",

View file

@ -1,6 +1,6 @@
[package]
name = "time-track"
version = "2.1.4"
version = "2.1.2"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

View file

@ -1,22 +0,0 @@
# time-track
A simple CLI tool for tracking how much time you have left to work. I find myself stressing about whether I'm hitting 8 real hours, so this little tool helps me avoid wasting
time calculating when my work day will end.
Simply enter times, one per line and send an EOF character when you're done. The first lines opens a span of work and the next line closes it so that you can build up working
time be clocking in and out. Finally, you can send additional arguments to the program to configure how long you intend to work (the default is 8 hours).
```
time-track
Working for 8 hours
Input times one per line. Send an EOF character to finish inputting...
8:30
9:30
11:15
12:30
13:16
18:20
19:30
20:11 # Send an EOF
Exactly done
```

View file

@ -39,7 +39,6 @@ fn main() -> Result<()> {
let mut total_minutes: i64 = 0;
let mut first: Option<DateTime<Local>> = None;
let mut last: Option<DateTime<Local>> = None;
for time in times {
match first {
None => {
@ -47,8 +46,7 @@ fn main() -> Result<()> {
},
Some(prev) => {
total_minutes += (time - prev).num_minutes();
first = None;
last = Some(time);
first = None
}
}
}
@ -60,6 +58,6 @@ fn main() -> Result<()> {
total_minutes += (now - remaining).num_minutes();
}
println!("{}", time::get_charaterized_time_remaining(total_minutes, target_minutes, last.unwrap_or_else(|| Local::now())));
println!("{}", time::get_charaterized_time_remaining(total_minutes, target_minutes));
Ok(())
}

View file

@ -54,11 +54,7 @@ pub fn to_hrs_minutes(total_minutes: i64) -> (i64, i64) {
(hours, minutes)
}
pub fn get_charaterized_time_remaining(
total_minutes: i64,
target_minutes: i64,
ended_at: DateTime<Local>,
) -> String {
pub fn get_charaterized_time_remaining(total_minutes: i64, target_minutes: i64) -> String {
if total_minutes == target_minutes {
return "Exactly done".to_string();
}
@ -70,20 +66,8 @@ pub fn get_charaterized_time_remaining(
} else {
let diff = target_minutes - total_minutes;
let (hours, minutes) = to_hrs_minutes(diff);
let now = Local::now();
return if ended_at > now {
let end_at = (ended_at + Duration::minutes(diff)).time();
let end_str = end_at.format("%-I:%M %p");
format!(
"You have {} remaining (end at {} starting from {})",
show_time(hours, minutes),
end_str,
ended_at.format("%-I:%M %p"),
)
} else {
let end_at = (now + Duration::minutes(diff)).time();
let end_str = end_at.format("%-I:%M %p");
format!("You have {} remaining (end at {} starting now)", show_time(hours, minutes), end_str)
}
let end_at = (Local::now() + Duration::minutes(diff)).time();
let end_str = end_at.format("%-I:%M %p");
return format!("You have {} remaining (end at {} starting now)", show_time(hours, minutes), end_str)
}
}