aboutsummaryrefslogtreecommitdiff
path: root/hatask.ha
diff options
context:
space:
mode:
authorJulian Hurst <ark@mansus.space>2024-11-15 03:23:20 +0100
committerJulian Hurst <ark@mansus.space>2024-11-15 03:24:02 +0100
commit77128923c2f1a65c723c653532d32dfe99d2f411 (patch)
tree9d837665866fb0d1c254ce202ffc7258dcabd99c /hatask.ha
parente0976a8c3f307d412d425c501c219d622a85555e (diff)
downloadhatask-77128923c2f1a65c723c653532d32dfe99d2f411.tar.gz
Support sorting by priority (-p flag)
Diffstat (limited to 'hatask.ha')
-rw-r--r--hatask.ha13
1 files changed, 11 insertions, 2 deletions
diff --git a/hatask.ha b/hatask.ha
index 0d3374f..ef8b51c 100644
--- a/hatask.ha
+++ b/hatask.ha
@@ -115,6 +115,12 @@ fn finishall(tasks: []task) void = {
};
};
+fn sortpriority(a: const *opaque, b: const *opaque) int = {
+ const a = a: *task;
+ const b = b: *task;
+ return (b.priority - a.priority): int;
+};
+
fn sortname(a: const *opaque, b: const *opaque) int = {
const a = a: *task;
const b = b: *task;
@@ -143,6 +149,7 @@ export fn main() void = {
"tasklist",
('f', "path", "tasks directory"),
('c', "context", "context filter"),
+ ('p', "sort by priority"),
("filter", ["filter tasks", "id"]: []getopt::help),
("f", ["filter tasks", "id"]: []getopt::help),
("show", ["show task details", "id"]: []getopt::help),
@@ -173,13 +180,15 @@ export fn main() void = {
};
defer cfinish(&cfg);
-
+ const sortfn: *sort::cmpfunc = &sortname;
for (let opt .. cmd.opts) {
switch (opt.0) {
case 'f' =>
cfg.tasksdir = strings::dup(opt.1);
case 'c' =>
cfg.context = strings::dup(opt.1);
+ case 'p' =>
+ sortfn = &sortpriority;
case =>
abort();
};
@@ -192,7 +201,7 @@ export fn main() void = {
yield tasks;
};
defer finishall(tasks);
- sort::sort(tasks: []opaque, size(task), &sortname);
+ sort::sort(tasks: []opaque, size(task), sortfn);
const com: (str, *getopt::command) = match (cmd.subcmd) {
case void =>