summaryrefslogtreecommitdiff
path: root/internal/task/task.go
diff options
context:
space:
mode:
authorPaul Bütow <1224732+snonux@users.noreply.github.com>2025-06-22 16:50:46 +0300
committerPaul Bütow <1224732+snonux@users.noreply.github.com>2025-06-22 16:50:46 +0300
commitb140c36cd8bb3d20c7211fe672b9d5674c9f0d3b (patch)
tree1f33e866c2a4fdb4df2c41a8acd15c2be81c14b5 /internal/task/task.go
parentdc1a6e83669dd22be4542833970d3251741ba1f3 (diff)
Add generic task command hotkey
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