The engine shipped opt-in behind --new-completion, with the old scripts
still on --completion. That split was never released, so flip it now
rather than carry a third flag through a deprecation later.
--completion serves the engine wrappers; the hand-written scripts move to
completion/legacy/ and stay reachable via --legacy-completion for a
release or two.
.goreleaser.yml needed to follow: it packages the static files from
completion/ into the deb/rpm/apk contents and the Homebrew cask, so
leaving it untouched would have shipped the engine to anyone running
`eval "$(task --completion zsh)"` and the old scripts to everyone
installing from a package. The paths it references are unchanged and now
resolve to the wrappers. Its archive glob is narrowed at the same time,
so the test harness under completion/tests/ stops being shipped in the
release archives.
As task is a very generic name that conflicts with for example
taskwarrior, some packagers might choose to change it. See my package in
the AUR: https://aur.archlinux.org/packages/go-task.
This change makes it easier to configure the name for downstream
packagers.
1. 'compgen -c' lists _all_ command names on the system, which is not
appropriate for this script, furthermore echo does not read from stdin
so the output is lost.
2. use _get_comp_words_by_ref and __ltrim_colon_completions to handle task
names with colons.
"...modifying COMP_WORDBREAKS in your completion script is not safe
(as it is a global variable and it has the side effect of affecting
the behavior of other completion scripts"
Ref.: https://stackoverflow.com/a/12495727/7044304
3. Add options completion
4. Use task --list-all