can add, add past, add future

This commit is contained in:
Bel LaPointe
2025-12-02 17:30:29 -07:00
parent ee9377d6da
commit eccaa06d98
3 changed files with 18 additions and 5 deletions

View File

@@ -11,7 +11,7 @@ fn main() {
files.reconcile().expect("failed to reconcile");
if let Some(add) = flags.add {
let task = match flags.add_schedule {
let task = match flags.add_schedule.clone() {
None => Task(serde_yaml::Value::String(add)),
Some(add_schedule) => {
let mut m = serde_yaml::Mapping::new();
@@ -20,10 +20,11 @@ fn main() {
Task(serde_yaml::Value::Mapping(m))
}
};
let now = Delta::now_time();
files.files[0]
.append(match task.next_due(Delta::now_time()) {
.append(match task.next_due(now.clone()) {
None => Delta::add(task),
Some(due) => Delta::add_at(task, due),
Some(due) => Delta::add_at(task, if due > now { due } else { now }),
})
.expect("failed to add");
@@ -612,10 +613,14 @@ impl Task {
}
}
pub fn must_next_due(&self, after: u64) -> u64 {
self.next_due(after).unwrap_or(1)
}
pub fn next_due(&self, after: u64) -> Option<u64> {
match self.schedule() {
Some(schedule) => self.parse_schedule_next(schedule, after),
None => Some(1),
None => None,
}
}
@@ -693,7 +698,7 @@ mod test_task {
fn test_unscheduled() {
let task = Task(serde_yaml::Value::String("hello world".to_string()));
assert_eq!(None, task.schedule());
assert_eq!(Some(1 as u64), task.next_due(100));
assert_eq!(1 as u64, task.must_next_due(100));
assert!(task._due(100));
}