summaryrefslogtreecommitdiff
path: root/assets/ask.fish
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-26 22:07:07 +0200
committerPaul Buetow <paul@buetow.org>2026-03-26 22:07:07 +0200
commitb10c6247e14a3acfe20e78426e131691e205a601 (patch)
tree907bb5b3ffa8239584ae9b7c2bfc34667b095b62 /assets/ask.fish
parentbef3cc7dd95745a5724d3569e45fe7be4aba02ee (diff)
ask: add fish completions for task CLI
Diffstat (limited to 'assets/ask.fish')
-rw-r--r--assets/ask.fish61
1 files changed, 61 insertions, 0 deletions
diff --git a/assets/ask.fish b/assets/ask.fish
new file mode 100644
index 0000000..e4d4654
--- /dev/null
+++ b/assets/ask.fish
@@ -0,0 +1,61 @@
+# Fish completion for ask.
+# Install as ~/.config/fish/completions/ask.fish or $XDG_CONFIG_HOME/fish/completions/ask.fish.
+
+function __ask_needs_root_completion
+ set -l tokens (commandline -opc)
+ if test (count $tokens) -le 1
+ return 0
+ end
+ for token in $tokens[2..-1]
+ if not string match -qr '^-' -- $token
+ return 1
+ end
+ end
+ return 0
+end
+
+function __ask_in_dep_context
+ set -l tokens (commandline -opc)
+ if test (count $tokens) -lt 2
+ return 1
+ end
+ set -l seen_dep 0
+ for token in $tokens[2..-1]
+ if string match -qr '^-' -- $token
+ continue
+ end
+ if test $seen_dep -eq 0
+ if test $token = dep
+ set seen_dep 1
+ else
+ return 1
+ end
+ else
+ return 1
+ end
+ end
+ test $seen_dep -eq 1
+end
+
+complete -c ask -f
+complete -c ask -s j -l json -d 'Emit JSON output'
+complete -c ask -n '__ask_needs_root_completion' -a 'add' -d 'Create a new task'
+complete -c ask -n '__ask_needs_root_completion' -a 'list' -d 'List active tasks'
+complete -c ask -n '__ask_needs_root_completion' -a 'all' -d 'List all tasks'
+complete -c ask -n '__ask_needs_root_completion' -a 'ready' -d 'List READY tasks'
+complete -c ask -n '__ask_needs_root_completion' -a 'info' -d 'Show task details'
+complete -c ask -n '__ask_needs_root_completion' -a 'annotate' -d 'Add an annotation'
+complete -c ask -n '__ask_needs_root_completion' -a 'start' -d 'Start a task'
+complete -c ask -n '__ask_needs_root_completion' -a 'stop' -d 'Stop a task'
+complete -c ask -n '__ask_needs_root_completion' -a 'done' -d 'Mark a task complete'
+complete -c ask -n '__ask_needs_root_completion' -a 'priority' -d 'Set priority'
+complete -c ask -n '__ask_needs_root_completion' -a 'tag' -d 'Add or remove a tag'
+complete -c ask -n '__ask_needs_root_completion' -a 'dep' -d 'Manage dependencies'
+complete -c ask -n '__ask_needs_root_completion' -a 'urgency' -d 'List tasks sorted by urgency'
+complete -c ask -n '__ask_needs_root_completion' -a 'modify' -d 'Modify task fields'
+complete -c ask -n '__ask_needs_root_completion' -a 'denotate' -d 'Remove an annotation'
+complete -c ask -n '__ask_needs_root_completion' -a 'delete' -d 'Delete a task'
+complete -c ask -n '__ask_needs_root_completion' -a 'help' -d 'Show help'
+complete -c ask -n '__ask_in_dep_context' -a 'add' -d 'Add a dependency'
+complete -c ask -n '__ask_in_dep_context' -a 'rm' -d 'Remove a dependency'
+complete -c ask -n '__ask_in_dep_context' -a 'list' -d 'List dependencies'