Install shell completion as an optional command

This commit is contained in:
2026-11-03 03:50:12 +00:00
parent 0bed76a6f7
commit fc2f6d5346
9 changed files with 219 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
# Shell completion implementation plan
Status: Stages 1–2 complete. Stage 3 is next.
Status: Stages 1–3 complete. Stage 4 is next.
Implement the [shell completion roadmap](completion.md) from baseline
`2301872`. Follow the stages in order in one sprint. Intermediate stages may
@@ -109,6 +109,8 @@ internal adapter, and neutral metadata package tests pass with `GOWORK=off` and
## Stage 3: Install completion as an ordinary declaration
Status: complete.
1. Add `func Completion(executable string) Command`. The parameter is the
executable basename the operator types, independent of the human-readable
`Identity.Name`. Use a root-only `completion` group with three runnable
@@ -134,6 +136,16 @@ internal adapter, and neutral metadata package tests pass with `GOWORK=off` and
rollback, late installation, and absence of new reserved names for an app
that does not install completion.
Completion: added the root-only completion declaration and three script
commands, with generator output delivered through the invocation reporter.
Registration validates hidden-query collisions in either order, and the routing
snapshot reflects committed installation. Tests cover help, quiet output,
delivery failure, invalid basenames, opt-in behavior, collisions, rollback,
nesting, and late installation. Fish variable names are adjusted to support
dotted executable basenames; interactive checks of those names pass in Bash,
Zsh, and Fish. Root and adapter package tests pass with `GOWORK=off` and
`GOTOOLCHAIN=local`.
## Stage 4: Resolve the entered command context
1. Add a private core completion request that separates completed words from