summaryrefslogtreecommitdiff
path: root/internal/askcli/completion.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-27 11:41:41 +0200
committerPaul Buetow <paul@buetow.org>2026-03-27 11:41:41 +0200
commit2d35eeb40eee8beed7163f41afab279bce2976ef (patch)
treefee5de2c646826cba17aab79f8c57c408c96eb71 /internal/askcli/completion.go
parentf57ccb885d20c48e1dae65b8ad5c46375b9a11a9 (diff)
Implement command registry for askcli commands
Diffstat (limited to 'internal/askcli/completion.go')
-rw-r--r--internal/askcli/completion.go41
1 files changed, 4 insertions, 37 deletions
diff --git a/internal/askcli/completion.go b/internal/askcli/completion.go
index b4d8620..889bbc8 100644
--- a/internal/askcli/completion.go
+++ b/internal/askcli/completion.go
@@ -9,40 +9,6 @@ type fishCompletionItem struct {
description string
}
-var askSingleSelectorCompletionCommands = []string{
- "info",
- "annotate",
- "start",
- "stop",
- "done",
- "priority",
- "tag",
- "modify",
- "denotate",
- "delete",
-}
-
-var askRootCompletionItems = []fishCompletionItem{
- {name: "add", description: "Create a new task"},
- {name: "list", description: "List active tasks"},
- {name: "all", description: "List all tasks"},
- {name: "ready", description: "List READY tasks"},
- {name: "info", description: "Show task details"},
- {name: "annotate", description: "Add an annotation"},
- {name: "start", description: "Start a task"},
- {name: "stop", description: "Stop a task"},
- {name: "done", description: "Mark a task complete"},
- {name: "priority", description: "Set priority"},
- {name: "tag", description: "Add or remove a tag"},
- {name: "dep", description: "Manage dependencies"},
- {name: "urgency", description: "List tasks sorted by urgency"},
- {name: "modify", description: "Modify task fields"},
- {name: "denotate", description: "Remove an annotation"},
- {name: "delete", description: "Delete a task"},
- {name: "fish", description: "Emit Fish shell completion script"},
- {name: "help", description: "Show help"},
-}
-
var askDepCompletionItems = []fishCompletionItem{
{name: "add", description: "Add a dependency"},
{name: "rm", description: "Remove a dependency"},
@@ -54,7 +20,7 @@ func fishSingleSelectorCompletionContext(positional []string) bool {
return false
}
- for _, command := range askSingleSelectorCompletionCommands {
+ for _, command := range commandRegistry.singleSelectorNames() {
if positional[0] == command {
return true
}
@@ -99,7 +65,8 @@ func FishCompletionFor(binaryPath string) string {
writeFishAddDependencyModifierFunction(&b)
b.WriteString("complete -c ask -f\n")
b.WriteString("complete -c ask -s j -l json -d 'Emit JSON output'\n")
- for _, item := range askRootCompletionItems {
+ for _, entry := range commandRegistry.rootCompletionEntries() {
+ item := fishCompletionItem{name: entry.name, description: entry.description}
writeFishCompletionLine(&b, "__ask_needs_root_completion", item)
}
for _, item := range askDepCompletionItems {
@@ -182,7 +149,7 @@ func writeFishUUIDContextFunction(b *strings.Builder) {
b.WriteString(" end\n")
b.WriteString(" switch $positional[1]\n")
b.WriteString(" case ")
- b.WriteString(strings.Join(askSingleSelectorCompletionCommands, " "))
+ b.WriteString(strings.Join(commandRegistry.singleSelectorNames(), " "))
b.WriteString("\n")
b.WriteString(" return 0\n")
b.WriteString(" case '*'\n")