summaryrefslogtreecommitdiff
path: root/internal/task/task.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/task/task.go')
-rw-r--r--internal/task/task.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/internal/task/task.go b/internal/task/task.go
index b20eef0..5f19482 100644
--- a/internal/task/task.go
+++ b/internal/task/task.go
@@ -86,6 +86,24 @@ func AddLine(line string) error {
return AddArgs(fields)
}
+// RunArgs executes "task" with the given arguments. Each item in args is
+// passed as a separate command-line argument.
+func RunArgs(args []string) error {
+ cmd := exec.Command("task", args...)
+ return cmd.Run()
+}
+
+// RunLine splits the provided line into shell words and executes "task" with
+// the resulting arguments. This allows callers to run arbitrary Taskwarrior
+// commands directly.
+func RunLine(line string) error {
+ fields, err := shlex.Split(line)
+ if err != nil {
+ return err
+ }
+ return RunArgs(fields)
+}
+
// Export retrieves all tasks using `task export rc.json.array=off` and parses
// the JSON output into a slice of Task structs.
// Export retrieves tasks using `task <filter> export rc.json.array=off` and parses