diff options
| author | Julian Hurst <ark@mansus.space> | 2024-11-15 02:28:22 +0100 |
|---|---|---|
| committer | Julian Hurst <ark@mansus.space> | 2024-11-15 02:29:10 +0100 |
| commit | 44ae1e53d833e2e577747aab5aec1404f2a78993 (patch) | |
| tree | 6291b76050aab15ee2ab246b592a5bb4101a3a6c | |
| parent | ec35f195dc2f0c41e4c8e4a9908aea51ea486c7d (diff) | |
| download | hatask-44ae1e53d833e2e577747aab5aec1404f2a78993.tar.gz | |
Add task path to printed list
| -rw-r--r-- | cmd.ha | 42 |
1 files changed, 31 insertions, 11 deletions
@@ -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)!; }; }; |
