What to build
Add a shipnode completion <bash|zsh|fish> command that emits a shell-completion script to stdout, following the standard pattern (e.g. kubectl completion zsh, gh completion -s zsh).
Completion should cover:
- Subcommands and their subsubcommands (
env pull, backup list, user remove, config show, etc.)
- All flags, with descriptions where helpful (
--dry-run, --follow, --source, --file, --lines, --steps, etc.)
- Dynamic values where cheap to compute:
Static completion (subcommands + flags) is enough to ship v1; dynamic completions can land as a follow-up.
Acceptance criteria
Blocked by
None - can start immediately (dynamic completions for --preset depend on #11)
What to build
Add a
shipnode completion <bash|zsh|fish>command that emits a shell-completion script to stdout, following the standard pattern (e.g.kubectl completion zsh,gh completion -s zsh).Completion should cover:
env pull,backup list,user remove,config show, etc.)--dry-run,--follow,--source,--file,--lines,--steps, etc.)rollback --to <release>→ list release timestamps fromremotePath/releases/user remove <name>→ list non-system users (mirrorsuser list)--sourceforlogs→pm2|caddy|system|all--presetforinit(once feat: shipnode completion — shell completion for bash/zsh/fish #11 lands) → list of supported preset namesStatic completion (subcommands + flags) is enough to ship v1; dynamic completions can land as a follow-up.
Acceptance criteria
shipnode completion bash | sourceenables completion in the current bash sessionshipnode completion zsh > \"${fpath[1]}/_shipnode\"works, thencompinitpicks it upshipnode completion fish | sourceworks in fishshipnode <TAB>lists all top-level subcommandsshipnode env <TAB>listsdiff,pull, plus the flags for pushshipnode logs --source <TAB>(v1 dynamic) listspm2 caddy system allBlocked by
None - can start immediately (dynamic completions for
--presetdepend on #11)