Skip to content

Commit 6bba3d4

Browse files
add tasl deadline
1 parent 2241835 commit 6bba3d4

File tree

6 files changed

+285
-11
lines changed

6 files changed

+285
-11
lines changed

Cargo.lock

Lines changed: 254 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ clap = { version = "4.0", features = ["derive"] } # CLI argument parsing
1414
serde = { version = "1.0", features = ["derive"] } # JSON serialization
1515
serde_json = "1.0" # JSON handling
1616
colored = "2.0"
17+
chrono = "0.4.41"

src/commands.rs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,34 @@
11
use crate::storage::save_tasks;
22
use crate::task::Task;
3+
use chrono::DateTime;
4+
use chrono::offset::Utc;
35
use colored::*;
46

5-
pub fn add_task(tasks: &mut Vec<Task>, text: String) {
6-
let new_task = Task::new(text.clone());
7-
tasks.push(new_task);
7+
pub fn add_task(tasks: &mut Vec<Task>, text: String, date_string: String) {
8+
let new_task = Task::new(text.clone(), date_string.clone());
9+
println!("Adding task: {}", new_task.date_string);
10+
tasks.push(new_task.clone());
811
save_tasks(tasks);
9-
println!("Added: {}", text.green());
12+
println!("Added: {} --due {}", text.green(), date_string.blue());
1013
}
1114

1215
pub fn list_tasks(tasks: &[Task]) {
1316
if tasks.is_empty() {
1417
println!("No tasks yet!");
1518
} else {
19+
let now: DateTime<Utc> = Utc::now();
20+
let current_date = now.format("%Y-%m-%d").to_string();
21+
1622
for (i, task) in tasks.iter().enumerate() {
1723
let status = if task.done { "[X]" } else { "[ ]" };
18-
println!("{}: {} {}", i, status.yellow(), task.text.blue());
24+
let (task_text, date_text) = if current_date > task.date_string {
25+
// Overdue
26+
(task.text.blue(), task.date_string.red())
27+
} else {
28+
// Due today or in the future
29+
(task.text.blue(), task.date_string.yellow())
30+
};
31+
println!("{}: {} {} due {}", i, status, task_text, date_text);
1932
}
2033
}
2134
}
@@ -51,6 +64,6 @@ pub fn edit_task(tasks: &mut Vec<Task>, index: usize, new_text: String) {
5164
new_text.green()
5265
);
5366
} else {
54-
println!("Error: Invalid index {}", index);
67+
println!("Error: Invalid index {index}");
5568
}
5669
}

0 commit comments

Comments
 (0)