feat(3216): swarmctl shell completions

Mirrors hivectl exactly: a `completions <shell>` verb that walks the
live clap tree, and a package that pipes it into installShellCompletion
for bash/zsh/fish. Generating from the command tree rather than writing a
script by hand is what keeps completions from drifting away from the
verbs they complete — the same reason `markdown-docs` renders the docs
from that tree.

Dispatched before PathArgs::resolve() for the same reason markdown-docs
is: emitting a completion script needs none of the SWARMCTL_AUTHELIA_*
deployment env vars, and requiring them would make the package's own
build-time invocation fail — exactly where it runs.

swarmctl leaves mkBinPackage for its own derivation, since the extractor
installs a binary and nothing else.
This commit is contained in:
atlas 2026-08-12 20:36:02 +02:00 committed by mara
commit 75f99ecafb
5 changed files with 72 additions and 1 deletions

1
Cargo.lock generated
View file

@ -4439,6 +4439,7 @@ dependencies = [
"anyhow",
"clap",
"clap-markdown",
"clap_complete",
"serde",
"serde_json",
]