Skip to content

Fix bash completions for extensions and aliases#7525

Merged
mislav merged 1 commit intotrunkfrom
bash-completion-fix
Jun 7, 2023
Merged

Fix bash completions for extensions and aliases#7525
mislav merged 1 commit intotrunkfrom
bash-completion-fix

Conversation

@mislav
Copy link
Contributor

@mislav mislav commented Jun 2, 2023

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.

bin/gh __complete merg
mergeconflict   Extension vilmibm/gh-mergeconflict
mergeconflict   Extension vilmibm/gh-mergeconflict
:4
Completion ended with directive: ShellCompDirectiveNoFileComp

Fixes #7524

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.
@mislav mislav requested a review from a team as a code owner June 2, 2023 11:35
@mislav mislav requested review from samcoe and removed request for a team June 2, 2023 11:35
@williammartin
Copy link
Member

WDYT about adding some tests around gh __complete to ensure we don't break aliases in future?

I'll defer to @samcoe for reviewing this since he is much more familiar.

@samcoe
Copy link
Contributor

samcoe commented Jun 4, 2023

@mislav @williammartin Thanks for debugging and fixing this one. Sorry for causing the regression, I mistakenly only tested it on zsh since that is the shell I use.

@mislav
Copy link
Contributor Author

mislav commented Jun 5, 2023

WDYT about adding some tests around gh __complete to ensure we don't break aliases in future?

What would those tests assert? Note that __complete is provided by Cobra. If we're wrapping assertions around its functionality, we're mostly just testing whether Cobra does what it should have done. Not sure if that belongs in our project.

@williammartin
Copy link
Member

If we're wrapping assertions around its functionality, we're mostly just testing whether Cobra does what it should have done.

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 fmt.Print does what it should. In this case we'd previously modified the validArgs to achieve something, and maintaining that caused a regression because we no longer provided cobra with the right information to autocomplete with what we'd expect.

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".

@mislav
Copy link
Contributor Author

mislav commented Jun 7, 2023

Well, I guess I'd assert that we were providing the right information for cobra to autocomplete with what we'd expect.

An integration test like that is certainly doable—build gh in CI, install a few extensions, call gh __complete with some prefixes and assert the exact output—however, there is a certain overhead to creating and maintaining such integration tests, and until someone undertakes that work, I think it might be actually less work (and equally viable in terms of functionality) for a human to manually ensure that the right information is passed to Cobra by thoughtful use of Cobra APIs.

@mislav mislav merged commit 2f4047d into trunk Jun 7, 2023
@mislav mislav deleted the bash-completion-fix branch June 7, 2023 14:12
renovate bot referenced this pull request in scottames/dots Jun 23, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](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


[#&#8203;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


[#&#8203;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

[#&#8203;13174](https://togithub.com/aquaproj/aqua-registry/issues/13174)
[iyear/tdl](https://togithub.com/iyear/tdl): A Telegram downloader
written in Golang

[#&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;yanskun](https://togithub.com/yanskun) in
[https://github.com/cli/cli/pull/7596](https://togithub.com/cli/cli/pull/7596)
- Fix a typo by
[@&#8203;lerocknrolla](https://togithub.com/lerocknrolla) in
[https://github.com/cli/cli/pull/7557](https://togithub.com/cli/cli/pull/7557)
- Fix flaky test by [@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/cli/cli/pull/7576](https://togithub.com/cli/cli/pull/7576)

#### New Contributors

- [@&#8203;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)
- [@&#8203;lerocknrolla](https://togithub.com/lerocknrolla) made their
first contribution in
[https://github.com/cli/cli/pull/7557](https://togithub.com/cli/cli/pull/7557)
- [@&#8203;testwill](https://togithub.com/testwill) made their first
contribution in
[https://github.com/cli/cli/pull/7591](https://togithub.com/cli/cli/pull/7591)
- [@&#8203;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
([#&#8203;6692](https://togithub.com/weaveworks/eksctl/issues/6692))

#### 🧰 Maintenance

- Bump dependencies
([#&#8203;6690](https://togithub.com/weaveworks/eksctl/issues/6690))

#### 📝 Documentation

- New eksctl channel
([#&#8203;6697](https://togithub.com/weaveworks/eksctl/issues/6697))

#### Acknowledgments

Weaveworks would like to sincerely thank:
[@&#8203;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
[@&#8203;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
[@&#8203;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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Extension autocomplete is broken

3 participants