Fix bash completions for extensions and aliases#7525
Conversation
Now that extensions and alises are real Cobra Command instances, they will appear in completions automatically and don't need to be additionally inserted via ValidArgs. Their addition to ValidArgs have caused all extensions and aliases to be listed twice within completion results, which didn't seem to affect zsh completions at all, but in bash completions it had caused the completion description to be a part of the expansion.
|
WDYT about adding some tests around I'll defer to @samcoe for reviewing this since he is much more familiar. |
|
@mislav @williammartin Thanks for debugging and fixing this one. Sorry for causing the regression, I mistakenly only tested it on |
What would those tests assert? Note that |
Well, I guess I'd assert that we were providing the right information for cobra to autocomplete with what we'd expect. If assertions are made on the stdout of a CLI, the tests ensure the CLI provides the correct user experience, rather than that Also, (though I don't feel strongly about this, I know you have thought about it), autocomplete should still function correctly in case we moved away from cobra, so there's value in black box tests to prevent regression. Finally, the tests serve as a set of examples of what we expect functionality to be for the autocomplete. Consider if we'd had this test before the alias work, they would have served as a beacon for "hey, maybe this is an area to consider". |
An integration test like that is certainly doable—build gh in CI, install a few extensions, call |
[](https://renovatebot.com) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [aquaproj/aqua-registry](https://togithub.com/aquaproj/aqua-registry) | minor | `v4.20.0` -> `v4.21.1` | | [cli/cli](https://togithub.com/cli/cli) | minor | `v2.30.0` -> `v2.31.0` | | [weaveworks/eksctl](https://togithub.com/weaveworks/eksctl) | minor | `v0.145.0` -> `v0.146.0` | | [zellij-org/zellij](https://togithub.com/zellij-org/zellij) | patch | `v0.37.1` -> `v0.37.2` | --- ### Release Notes <details> <summary>aquaproj/aqua-registry</summary> ### [`v4.21.1`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.21.1) [Compare Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.21.0...v4.21.1) [Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.21.1) | [Pull Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.21.1) | aquaproj/aqua-registry@v4.21.0...v4.21.1 #### Fixes [#​13199](https://togithub.com/aquaproj/aqua-registry/issues/13199) kubernetes-sigs/kustomize: Follow up changes of kustomize v5.1.0 - [https://github.com/kubernetes-sigs/kustomize/issues/5220](https://togithub.com/kubernetes-sigs/kustomize/issues/5220) ### [`v4.21.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.21.0) [Compare Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.20.0...v4.21.0) [Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.21.0) | [Pull Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.21.0) | aquaproj/aqua-registry@v4.20.0...v4.21.0 #### 🎉 New Packages [#​13173](https://togithub.com/aquaproj/aqua-registry/issues/13173) [assetnote/surf](https://togithub.com/assetnote/surf): Escalate your SSRF vulnerabilities on Modern Cloud Environments. `surf` allows you to filter a list of hosts, returning a list of viable SSRF candidates [#​13174](https://togithub.com/aquaproj/aqua-registry/issues/13174) [iyear/tdl](https://togithub.com/iyear/tdl): A Telegram downloader written in Golang [#​13172](https://togithub.com/aquaproj/aqua-registry/issues/13172) [nikolaydubina/go-cover-treemap](https://togithub.com/nikolaydubina/go-cover-treemap): Go code coverage to SVG treemap [@​iwata](https://togithub.com/iwata) </details> <details> <summary>cli/cli</summary> ### [`v2.31.0`](https://togithub.com/cli/cli/releases/tag/v2.31.0): GitHub CLI 2.31.0 [Compare Source](https://togithub.com/cli/cli/compare/v2.30.0...v2.31.0) #### What's New - New suite of `project` commands for interacting with and manipulating projects. Huge shoutout 🥳 for the time and effort put into this work by [@​mntlty](https://togithub.com/mntlty) in [https://github.com/cli/cli/pull/7375](https://togithub.com/cli/cli/pull/7375) [https://github.com/cli/cli/pull/7578](https://togithub.com/cli/cli/pull/7578) - New `search code` command by [@​joshkraft](https://togithub.com/joshkraft) in [https://github.com/cli/cli/pull/7376](https://togithub.com/cli/cli/pull/7376) - New `cs view` command by [@​dmgardiner25](https://togithub.com/dmgardiner25) in [https://github.com/cli/cli/pull/7496](https://togithub.com/cli/cli/pull/7496) [https://github.com/cli/cli/pull/7539](https://togithub.com/cli/cli/pull/7539) #### What's Changed - `api`: output a single JSON array in REST pagination mode by [@​mislav](https://togithub.com/mislav) in [https://github.com/cli/cli/pull/7190](https://togithub.com/cli/cli/pull/7190) - `api`: support array params in GET queries by [@​mislav](https://togithub.com/mislav) in [https://github.com/cli/cli/pull/7513](https://togithub.com/cli/cli/pull/7513) - `api`: force method to uppercase by [@​ffalor](https://togithub.com/ffalor) in [https://github.com/cli/cli/pull/7514](https://togithub.com/cli/cli/pull/7514) - `alias`: Allow aliases to recognize extended commands by [@​srz-zumix](https://togithub.com/srz-zumix) in [https://github.com/cli/cli/pull/7523](https://togithub.com/cli/cli/pull/7523) - `alias import`: Fix `--clobber` flag by [@​samcoe](https://togithub.com/samcoe) in [https://github.com/cli/cli/pull/7569](https://togithub.com/cli/cli/pull/7569) - `run rerun`: Improve docs around `--job` flag by [@​williammartin](https://togithub.com/williammartin) in [https://github.com/cli/cli/pull/7527](https://togithub.com/cli/cli/pull/7527) - `run view`: Support viewing logs for jobs with composite actions by [@​williammartin](https://togithub.com/williammartin) in [https://github.com/cli/cli/pull/7526](https://togithub.com/cli/cli/pull/7526) - `gist edit`: Add selector option to `gist edit` command by [@​kousikmitra](https://togithub.com/kousikmitra) in [https://github.com/cli/cli/pull/7537](https://togithub.com/cli/cli/pull/7537) - `repo clone`: Set upstream remote to track all branches after initial fetch by [@​samcoe](https://togithub.com/samcoe) in [https://github.com/cli/cli/pull/7542](https://togithub.com/cli/cli/pull/7542) - `extension`: Speed up listing extensions by lazy-loading extension information when needed by [@​mislav](https://togithub.com/mislav) in [https://github.com/cli/cli/pull/7493](https://togithub.com/cli/cli/pull/7493) - `auth`: Add timeouts to keyring operations by [@​samcoe](https://togithub.com/samcoe) in [https://github.com/cli/cli/pull/7580](https://togithub.com/cli/cli/pull/7580) - `auth status`: write to stdout on success by [@​rajhawaldar](https://togithub.com/rajhawaldar) in [https://github.com/cli/cli/pull/7540](https://togithub.com/cli/cli/pull/7540) - `completion`: Fix bash completions for extensions and aliases by [@​mislav](https://togithub.com/mislav) in [https://github.com/cli/cli/pull/7525](https://togithub.com/cli/cli/pull/7525) - `issue/pr view`: alphabetically sort labels for `gh pr/issue view` by [@​ffalor](https://togithub.com/ffalor) in [https://github.com/cli/cli/pull/7587](https://togithub.com/cli/cli/pull/7587) - Fix error handling for extension and shell alias commands by [@​samcoe](https://togithub.com/samcoe) in [https://github.com/cli/cli/pull/7567](https://togithub.com/cli/cli/pull/7567) - Fix pkg imported more than once by [@​testwill](https://togithub.com/testwill) in [https://github.com/cli/cli/pull/7591](https://togithub.com/cli/cli/pull/7591) - Refactor a nested if statement by [@​yanskun](https://togithub.com/yanskun) in [https://github.com/cli/cli/pull/7596](https://togithub.com/cli/cli/pull/7596) - Fix a typo by [@​lerocknrolla](https://togithub.com/lerocknrolla) in [https://github.com/cli/cli/pull/7557](https://togithub.com/cli/cli/pull/7557) - Fix flaky test by [@​samcoe](https://togithub.com/samcoe) in [https://github.com/cli/cli/pull/7515](https://togithub.com/cli/cli/pull/7515) - Credential rotations, renames and decouplings from Mislav by [@​williammartin](https://togithub.com/williammartin) in [https://github.com/cli/cli/pull/7544](https://togithub.com/cli/cli/pull/7544) - build(deps): bump github.com/cli/go-gh/v2 from 2.0.0 to 2.0.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/cli/cli/pull/7546](https://togithub.com/cli/cli/pull/7546) - build(deps): bump github.com/AlecAivazis/survey/v2 from 2.3.6 to 2.3.7 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/cli/cli/pull/7576](https://togithub.com/cli/cli/pull/7576) #### New Contributors - [@​srz-zumix](https://togithub.com/srz-zumix) made their first contribution in [https://github.com/cli/cli/pull/7523](https://togithub.com/cli/cli/pull/7523) - [@​lerocknrolla](https://togithub.com/lerocknrolla) made their first contribution in [https://github.com/cli/cli/pull/7557](https://togithub.com/cli/cli/pull/7557) - [@​testwill](https://togithub.com/testwill) made their first contribution in [https://github.com/cli/cli/pull/7591](https://togithub.com/cli/cli/pull/7591) - [@​rajhawaldar](https://togithub.com/rajhawaldar) made their first contribution in [https://github.com/cli/cli/pull/7540](https://togithub.com/cli/cli/pull/7540) **Full Changelog**: cli/cli@v2.30.0...v2.31.0 </details> <details> <summary>weaveworks/eksctl</summary> ### [`v0.146.0`](https://togithub.com/weaveworks/eksctl/releases/tag/v0.146.0): eksctl 0.146.0 (permalink) [Compare Source](https://togithub.com/weaveworks/eksctl/compare/0.145.0...0.146.0) ### Release v0.146.0 #### 🎯 Improvements - Update vpc-cni to 1.12.6 ([#​6692](https://togithub.com/weaveworks/eksctl/issues/6692)) #### 🧰 Maintenance - Bump dependencies ([#​6690](https://togithub.com/weaveworks/eksctl/issues/6690)) #### 📝 Documentation - New eksctl channel ([#​6697](https://togithub.com/weaveworks/eksctl/issues/6697)) #### Acknowledgments Weaveworks would like to sincerely thank: [@​wind0r](https://togithub.com/wind0r) </details> <details> <summary>zellij-org/zellij</summary> ### [`v0.37.2`](https://togithub.com/zellij-org/zellij/releases/tag/v0.37.2) [Compare Source](https://togithub.com/zellij-org/zellij/compare/v0.37.1...v0.37.2) This is a patch release to fix some minor issues in the previous release. #### What's Changed - hotfix: include theme files into binary by [@​jaeheonji](https://togithub.com/jaeheonji) in [https://github.com/zellij-org/zellij/pull/2566](https://togithub.com/zellij-org/zellij/pull/2566) - fix(plugins): make hide_self api idempotent by [@​imsnif](https://togithub.com/imsnif) in [https://github.com/zellij-org/zellij/pull/2568](https://togithub.com/zellij-org/zellij/pull/2568) **Full Changelog**: zellij-org/zellij@v0.37.1...v0.37.2 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/scottames/dots). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xMzEuMCIsInVwZGF0ZWRJblZlciI6IjM1LjEzMS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Now that extensions and alises are real Cobra Command instances, they will appear in completions automatically and don't need to be additionally inserted via ValidArgs. Their addition to ValidArgs have caused all extensions and aliases to be listed twice within completion results, which didn't seem to affect zsh completions at all, but in bash completions it had caused the completion description to be a part of the expansion.
Fixes #7524