Noir::CLI::Catalog
The noir command surface: which top-level verbs exist, what each one
does, and the fixed vocabulary that follows it.
Every consumer reads it from here — the router's dispatch, each command's
-h page, noir help, and the zsh/bash/fish/elvish completion
generators. Before this module the same six lists were written out in as
many places (KNOWN_COMMANDS, KNOWN_HELP_TARGETS, each command's
ACTIONS, and once per shell in completions.cr), with nothing linking
them: a renamed action stayed "valid" in three completion scripts, and a
new subcommand had to be remembered in six files or it silently went
uncompleted.
Constants
Sub-action vocabularies. Each command module re-exports the one it owns,
so CacheCommand::ACTIONS still reads naturally at its use site while
the list itself lives in one place.
Class methods
The verb → next-word vocabulary pairs a completion script needs, in the
order its case should test them. scan is excluded: it is the
fallback branch every shell falls through to, and its next word is a
path or a flag rather than a fixed word.
help completes the verb list itself, which is why this can't simply be
Command#actions.