aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Hurst <ark@mansus.space>2024-11-15 02:28:22 +0100
committerJulian Hurst <ark@mansus.space>2024-11-15 02:29:10 +0100
commit44ae1e53d833e2e577747aab5aec1404f2a78993 (patch)
tree6291b76050aab15ee2ab246b592a5bb4101a3a6c
parentec35f195dc2f0c41e4c8e4a9908aea51ea486c7d (diff)
downloadhatask-44ae1e53d833e2e577747aab5aec1404f2a78993.tar.gz
Add task path to printed list
-rw-r--r--cmd.ha42
1 files changed, 31 insertions, 11 deletions
diff --git a/cmd.ha b/cmd.ha
index d22c70c..c98e03f 100644
--- a/cmd.ha
+++ b/cmd.ha
@@ -99,14 +99,16 @@ fn show(cfg: config, tasks: []task, a: arguments) (void | task | error) = {
fmt::println(t.content)!;
};
-fn printtasktsv(t: task, id: size) (void | error) = {
+fn printtasktsv(cfg: config, t: task, id: size) (void | error) = {
const sid = strings::dup(strconv::ztos(id));
defer free(sid);
const spriority = strconv::ztos(t.priority);
- tsv::writerecord(os::stdout, [sid, t.name, spriority])!;
+ const buf = path::init(t.path)?;
+ const p = path::trimprefix(&buf, cfg.tasksdir)?;
+ tsv::writerecord(os::stdout, [sid, t.name, spriority, p])!;
};
-fn printtask(t: task, id: size) (void | error) = {
+fn printtask(cfg: config, t: task, id: size) (void | error) = {
let name = strings::dup(t.name);
defer free(name);
if (len(t.name) > PADDING - 4) {
@@ -115,7 +117,10 @@ fn printtask(t: task, id: size) (void | error) = {
};
const pad = PADDING - len(name) + len(strconv::utos(t.priority));
const namepad = 10 - len(strconv::ztos(id)) + len(name);
- fmt::printfln("{}{%}{%}", id, name, &fmt::mods {
+ const buf = path::init(t.path)?;
+ const p = path::trimprefix(&buf, cfg.tasksdir)?;
+ const pathpad = 15 - len(strconv::utos(t.priority)) + len(p);
+ fmt::printfln("{}{%}{%}{%}", id, name, &fmt::mods {
pad = ' ',
width = namepad,
...
@@ -125,6 +130,11 @@ fn printtask(t: task, id: size) (void | error) = {
width = pad,
...
},
+ p, &fmt::mods {
+ pad = ' ',
+ width = pathpad,
+ ...
+ },
)!;
};
@@ -142,7 +152,8 @@ fn do(cfg: config, tasks: []task, a: arguments) (void | task | error) = {
fn filter(cfg: config, tasks: []task, a: arguments) (void | task | error) = {
const headpad = PADDING - len("name") + len("priority");
const namepad = 10 - len("id") + len("name");
- fmt::printfln("id{%}{%}",
+ const pathpad = 15 - len("priority") + len("path");
+ fmt::printfln("id{%}{%}{%}",
"name", &fmt::mods {
pad = ' ',
width = namepad,
@@ -151,13 +162,17 @@ fn filter(cfg: config, tasks: []task, a: arguments) (void | task | error) = {
pad = ' ',
width = headpad,
...
+ },"path", &fmt::mods {
+ pad = ' ',
+ width = pathpad,
+ ...
},
)!;
const args = a.args;
for (let i = 0z; i < len(tasks); i += 1) {
const t = tasks[i];
if (len(args) == 0z) {
- printtask(t, i)?;
+ printtask(cfg, t, i)?;
};
for (const s .. args) {
const lname = ascii::strlower(t.name);
@@ -165,24 +180,25 @@ fn filter(cfg: config, tasks: []task, a: arguments) (void | task | error) = {
const ls = ascii::strlower(s);
defer free(ls);
if (strings::contains(lname, ls)) {
- printtask(t, i)?;
+ printtask(cfg, t, i)?;
};
};
};
};
fn tsv(cfg: config, tasks: []task, a: arguments) (void | task | error) = {
- tsv::writerecord(os::stdout, ["id" ,"name", "priority"])!;
+ tsv::writerecord(os::stdout, ["id" ,"name", "priority", "path"])!;
for (let i = 0z; i < len(tasks); i += 1) {
const t = tasks[i];
- printtasktsv(t, i)?;
+ printtasktsv(cfg, t, i)?;
};
};
fn listall(cfg: config, tasks: []task) void = {
const headpad = PADDING - len("name") + len("priority");
const namepad = 10 - len("id") + len("name");
- fmt::printfln("id{%}{%}",
+ const pathpad = 15 - len("priority") + len("path");
+ fmt::printfln("id{%}{%}{%}",
"name", &fmt::mods {
pad = ' ',
width = namepad,
@@ -191,10 +207,14 @@ fn listall(cfg: config, tasks: []task) void = {
pad = ' ',
width = headpad,
...
+ },"path", &fmt::mods {
+ pad = ' ',
+ width = pathpad,
+ ...
},
)!;
for (let i = 0z; i < len(tasks); i += 1) {
- printtask(tasks[i], i)!;
+ printtask(cfg, tasks[i], i)!;
};
};