aboutsummaryrefslogtreecommitdiff
path: root/hatask.ha
diff options
context:
space:
mode:
Diffstat (limited to 'hatask.ha')
-rw-r--r--hatask.ha8
1 files changed, 7 insertions, 1 deletions
diff --git a/hatask.ha b/hatask.ha
index 747e2ef..35f3f9b 100644
--- a/hatask.ha
+++ b/hatask.ha
@@ -15,6 +15,7 @@ use sort;
use fnmatch;
use errors;
use time;
+use map;
type task = struct {
name: str,
@@ -22,6 +23,7 @@ type task = struct {
context: (str | void),
tags: []str,
priority: uint,
+ misc: map::map,
content: str,
lmd: time::instant,
};
@@ -84,6 +86,7 @@ fn readtask(taskpath: str) (task | rtaskerror) = {
context = void,
tags = [],
lmd = stat.mtime,
+ misc = map::newmap(),
...
};
for (let entry: ini::entry => ini::next(&isc)?) {
@@ -95,7 +98,7 @@ fn readtask(taskpath: str) (task | rtaskerror) = {
case "tags" =>
t.tags = strings::dupall(strings::split(entry.2, ","));
case =>
- void;
+ map::put(&t.misc, entry.1, entry.2);
};
};
if (t.name == "") {
@@ -114,6 +117,7 @@ fn freetask(t: *task) void = {
free(t.context as str);
};
strings::freeall(t.tags);
+ map::finishmap(&t.misc);
};
fn finishall(tasks: []task) void = {
@@ -201,6 +205,8 @@ export fn main() void = {
("d", ["delete a task", "id"]: []getopt::help),
("tsv", ["print tsv of tasks"]: []getopt::help),
("t", ["print tsv of tasks"]: []getopt::help),
+ ("get", ["get a misc property of a task", "[id]", "[key]"]: []getopt::help),
+ ("g", ["get a misc property of a task", "[id]", "[key]"]: []getopt::help),
);
defer getopt::finish(&cmd);