diff options
| author | Julian Hurst <ark@mansus.space> | 2024-11-15 03:23:20 +0100 |
|---|---|---|
| committer | Julian Hurst <ark@mansus.space> | 2024-11-15 03:24:02 +0100 |
| commit | 77128923c2f1a65c723c653532d32dfe99d2f411 (patch) | |
| tree | 9d837665866fb0d1c254ce202ffc7258dcabd99c /hatask.ha | |
| parent | e0976a8c3f307d412d425c501c219d622a85555e (diff) | |
| download | hatask-77128923c2f1a65c723c653532d32dfe99d2f411.tar.gz | |
Support sorting by priority (-p flag)
Diffstat (limited to 'hatask.ha')
| -rw-r--r-- | hatask.ha | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -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 => |
