diff options
Diffstat (limited to 'hatask.ha')
| -rw-r--r-- | hatask.ha | 24 |
1 files changed, 18 insertions, 6 deletions
@@ -13,6 +13,7 @@ use encoding::utf8; use getopt; use sort; use fnmatch; +use errors; type task = struct { name: str, @@ -157,22 +158,33 @@ export fn main() void = { ); defer getopt::finish(&cmd); - const cfg: config = config { - tasksdir = "tasks", - context = "*", + const cfg: config = match (readconfig()) { + case let cfg: config => + yield cfg; + case let e: fs::error => + match (e) { + case let e: errors::noentry => + fmt::fatal("No config file found"); + case => + fmt::fatal(fs::strerror(e)); + }; + case let e: cerror => + fmt::fatal(strcerror(e)); }; + defer cfinish(&cfg); + + for (let opt .. cmd.opts) { switch (opt.0) { case 'f' => - cfg.tasksdir = opt.1; + cfg.tasksdir = strings::dup(opt.1); case 'c' => - cfg.context = opt.1; + cfg.context = strings::dup(opt.1); case => abort(); }; }; - const tasks = match (listtasks(cfg.tasksdir, cfg.context)) { case let e: rtaskerror => fmt::fatal(strrtaskerror(e)); |
