diff options
| author | Julian Hurst <ark@mansus.space> | 2024-11-15 01:14:07 +0100 |
|---|---|---|
| committer | Julian Hurst <ark@mansus.space> | 2024-11-15 01:14:07 +0100 |
| commit | e2bee01af84bc7a6bc191f931f195b3c0b5175cc (patch) | |
| tree | 9adf909a75fb57132fa650991f7ffd8b6cb2613f /cmd.ha | |
| parent | e2b4bcd44149125b5e2a53579e1340ec10bc8eb3 (diff) | |
| download | hatask-e2bee01af84bc7a6bc191f931f195b3c0b5175cc.tar.gz | |
Add csv command
Diffstat (limited to 'cmd.ha')
| -rw-r--r-- | cmd.ha | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -7,6 +7,7 @@ use path; use os::exec; use strconv; use ascii; +use csv; type error = !(!str | io::error | path::error | exec::error | strconv::error); @@ -38,6 +39,10 @@ const commands: [_]command = [ names = ["d", "done"], func = &do, }, + command { + names = ["c", "csv"], + func = &csv, + }, ]; fn execcommand(name: str, tasks: []task, args: arguments) (void | error) = { @@ -78,6 +83,13 @@ fn show(tasks: []task, a: arguments) (void | task | error) = { fmt::println(t.content)!; }; +fn printtaskcsv(t: task, id: size) (void | error) = { + const sid = strings::dup(strconv::ztos(id)); + defer free(sid); + const spriority = strconv::ztos(t.priority); + csv::writerecord(os::stdout, [sid, t.name, spriority])!; +}; + fn printtask(t: task, id: size) (void | error) = { let name = strings::dup(t.name); defer free(name); @@ -143,6 +155,14 @@ fn filter(tasks: []task, a: arguments) (void | task | error) = { }; }; +fn csv(tasks: []task, a: arguments) (void | task | error) = { + csv::writerecord(os::stdout, ["id" ,"name", "priority"])!; + for (let i = 0z; i < len(tasks); i += 1) { + const t = tasks[i]; + printtaskcsv(t, i)?; + }; +}; + fn listall(tasks: []task) void = { const headpad = PADDING - len("name") + len("priority"); const namepad = 10 - len("id") + len("name"); |
