spf13/cobra
### [`v1.5.0`](https://togithub.com/spf13/cobra/releases/tag/v1.5.0)
[Compare Source](https://togithub.com/spf13/cobra/compare/v1.4.0...v1.5.0)
#### Spring 2022 Release đĽď¸
Hello everyone! Welcome to another release of cobra. Completions continue to get better and better. This release adds a few really cool new features. We also continue to patch versions of our dependencies as they become available via dependabot. Happy coding!
#### Active help đđź
Shout out to [@marckhouzam](https://togithub.com/marckhouzam) for a big value add: Active Help [https://github.com/spf13/cobra/pull/1482](https://togithub.com/spf13/cobra/pull/1482). With active help, a program can provide some inline warnings or hints for users as they hit tab. Now, your CLIs can be even more intuitive to use!
Currently active help is only supported for bash V2 and zsh. Marc wrote a whole guide on how to do this, so make sure to give it a good read to learn how you can add this to your cobra code! https://github.com/spf13/cobra/blob/master/active_help.md
#### Group flags đ§đźâđ¤âđ§đź
Cobra now has the ability to mark flags as required or exclusive as a ***group***. Shout out to our newest maintainer [@johnSchnake](https://togithub.com/johnSchnake) for this! [https://github.com/spf13/cobra/pull/1654](https://togithub.com/spf13/cobra/pull/1654) Let's say you have a `username` flag that ***MUST*** be partnered with a `password` flag. Well, now, you can enforce those as being required together:
```go
rootCmd.Flags().StringVarP(&u, "username", "u", "", "Username (required if password is set)")
rootCmd.Flags().StringVarP(&pw, "password", "p", "", "Password (required if username is set)")
rootCmd.MarkFlagsRequiredTogether("username", "password")
```
Flags may also be marked as "mutally exclusive" with the `MarkFlagsMutuallyExclusive(string, string ... )` command API. Refer to our [user guide documentation](https://togithub.com/spf13/cobra/blob/master/user_guide.md) for further info!
#### Completions đ
- Add backwards-compatibility tests for legacyArgs() by [@marckhouzam](https://togithub.com/marckhouzam) in [https://github.com/spf13/cobra/pull/1547](https://togithub.com/spf13/cobra/pull/1547)
- feat: Add how to load completions in your current zsh session by [@ondrejsika](https://togithub.com/ondrejsika) in [https://github.com/spf13/cobra/pull/1608](https://togithub.com/spf13/cobra/pull/1608)
- Introduce FixedCompletions by [@emersion](https://togithub.com/emersion) in [https://github.com/spf13/cobra/pull/1574](https://togithub.com/spf13/cobra/pull/1574)
- Add shell completion to flag groups by [@marckhouzam](https://togithub.com/marckhouzam) in [https://github.com/spf13/cobra/pull/1659](https://togithub.com/spf13/cobra/pull/1659)
- Modify brew prefix path in macOS system by [@imxw](https://togithub.com/imxw) in [https://github.com/spf13/cobra/pull/1719](https://togithub.com/spf13/cobra/pull/1719)
- perf(bash-v2): use backslash escape string expansion for tab by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1682](https://togithub.com/spf13/cobra/pull/1682)
- style(bash-v2): out is not an array variable, do not refer to it as such by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1681](https://togithub.com/spf13/cobra/pull/1681)
- perf(bash-v2): standard completion optimizations by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1683](https://togithub.com/spf13/cobra/pull/1683)
- style(bash): out is not an array variable, do not refer to it as such by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1684](https://togithub.com/spf13/cobra/pull/1684)
- perf(bash-v2): short-circuit descriptionless candidate lists by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1686](https://togithub.com/spf13/cobra/pull/1686)
- perf(bash-v2): speed up filtering entries with descriptions by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1689](https://togithub.com/spf13/cobra/pull/1689)
- perf(bash-v2): speed up filtering menu-complete descriptions by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1692](https://togithub.com/spf13/cobra/pull/1692)
- fix(bash-v2): skip empty completions when filtering descriptions by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1691](https://togithub.com/spf13/cobra/pull/1691)
- perf(bash-v2): read directly to COMPREPLY on descriptionless short circuit by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1700](https://togithub.com/spf13/cobra/pull/1700)
- fix: Don't complete \_command on zsh by [@twpayne](https://togithub.com/twpayne) in [https://github.com/spf13/cobra/pull/1690](https://togithub.com/spf13/cobra/pull/1690)
- Improve fish_completions code quality by [@t29kida](https://togithub.com/t29kida) in [https://github.com/spf13/cobra/pull/1515](https://togithub.com/spf13/cobra/pull/1515)
- Fix handling of descriptions for bash v3 by [@marckhouzam](https://togithub.com/marckhouzam) in [https://github.com/spf13/cobra/pull/1735](https://togithub.com/spf13/cobra/pull/1735)
- undefined or nil Args default to ArbitraryArgs by [@umarcor](https://togithub.com/umarcor) in [https://github.com/spf13/cobra/pull/1612](https://togithub.com/spf13/cobra/pull/1612)
- Add Command.SetContext by [@joshcarp](https://togithub.com/joshcarp) in [https://github.com/spf13/cobra/pull/1551](https://togithub.com/spf13/cobra/pull/1551)
- Wrap printf tab with quotes by [@PapaCharlie](https://togithub.com/PapaCharlie) in [https://github.com/spf13/cobra/pull/1665](https://togithub.com/spf13/cobra/pull/1665)
#### Documentation đ
- Fixed typos in completions docs - [@cuishuang](https://togithub.com/cuishuang) [https://github.com/spf13/cobra/pull/1625](https://togithub.com/spf13/cobra/pull/1625)
- Removed `CHANGELOG.md` as it isn't updated - [@johnSchnake](https://togithub.com/johnSchnake) [https://github.com/spf13/cobra/pull/1634](https://togithub.com/spf13/cobra/pull/1634)
- Minor typo fix in `shell_completion.md` - [@danieldn](https://togithub.com/danieldn) [https://github.com/spf13/cobra/pull/1678](https://togithub.com/spf13/cobra/pull/1678)
- Changed branch name in the cobra generator link to 'main' - [@skywalker2909](https://togithub.com/skywalker2909) [https://github.com/spf13/cobra/pull/1645](https://togithub.com/spf13/cobra/pull/1645)
- Fix Command.Context comment by [@katexochen](https://togithub.com/katexochen) in [https://github.com/spf13/cobra/pull/1639](https://togithub.com/spf13/cobra/pull/1639)
- Change appropriate links from http:// to https:// where applicable - [@deining](https://togithub.com/deining) [https://github.com/spf13/cobra/pull/1695](https://togithub.com/spf13/cobra/pull/1695)
#### Testing & CI âď¸
- Test on Golang 1.18 - [@umarcor](https://togithub.com/umarcor) [https://github.com/spf13/cobra/pull/1635](https://togithub.com/spf13/cobra/pull/1635)
- Use `RICHGO_FORCE_COLOR` - [@umarcor](https://togithub.com/umarcor) [https://github.com/spf13/cobra/pull/1647](https://togithub.com/spf13/cobra/pull/1647)
- Adds size labeler GitHub action by [@jpmcb](https://togithub.com/jpmcb) in [https://github.com/spf13/cobra/pull/1610](https://togithub.com/spf13/cobra/pull/1610)
- Update `stale-bot` settings - [@jpmcb](https://togithub.com/jpmcb) [https://github.com/spf13/cobra/pull/1609](https://togithub.com/spf13/cobra/pull/1609)
#### Beep boop, bot commits đ¤
- Bumped golangci/golangci-lint-action from 3.1.0 to 3.2.0 - [@dependabot](https://togithub.com/dependabot) [https://github.com/spf13/cobra/pull/1697](https://togithub.com/spf13/cobra/pull/1697)
- Bump codelytv/pr-size-labeler from 1.8.0 to 1.8.1 - [@dependabot](https://togithub.com/dependabot) [https://github.com/spf13/cobra/pull/1661](https://togithub.com/spf13/cobra/pull/1661)
- Bump actions/stale from 1 to 5 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1618](https://togithub.com/spf13/cobra/pull/1618)
- Bump actions/cache from 2 to 3 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1640](https://togithub.com/spf13/cobra/pull/1640)
- Bump actions/labeler from 3 to 4 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1620](https://togithub.com/spf13/cobra/pull/1620)
- Bump golangci/golangci-lint-action from 2 to 3.1.0 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1615](https://togithub.com/spf13/cobra/pull/1615)
- Bump actions/checkout from 2 to 3 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1619](https://togithub.com/spf13/cobra/pull/1619)
- Bump github.com/cpuguy83/go-md2man/v2 from 2.0.1 to 2.0.2 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1688](https://togithub.com/spf13/cobra/pull/1688)
- Bump actions/setup-go from 2 to 3 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1660](https://togithub.com/spf13/cobra/pull/1660)
#### Misc đ
- Use `errors.Is()` to check for errors - [@Luap99](https://togithub.com/Luap99) [https://github.com/spf13/cobra/pull/1730](https://togithub.com/spf13/cobra/pull/1730)
- Prefer ReplaceAll instead of Replace(..., -1) by [@WhyNotHugo](https://togithub.com/WhyNotHugo) in [https://github.com/spf13/cobra/pull/1530](https://togithub.com/spf13/cobra/pull/1530)
- Add Kubescape to projects - [@avinashupadhya99](https://togithub.com/avinashupadhya99) [https://github.com/spf13/cobra/pull/1642](https://togithub.com/spf13/cobra/pull/1642)
- Add Pulumi as a project using cobra by [@iwahbe](https://togithub.com/iwahbe) in [https://github.com/spf13/cobra/pull/1720](https://togithub.com/spf13/cobra/pull/1720)
- Add Polygon Edge as a project using Cobra by [@zivkovicmilos](https://togithub.com/zivkovicmilos) in [https://github.com/spf13/cobra/pull/1672](https://togithub.com/spf13/cobra/pull/1672)
Shoutout to *ALL* our contributors (and all the new first time contributors!!) - great work everyone!! Cobra and it's huge impact wouldn't be possible without you đđź đ đ
**Full Changelog**: https://github.com/spf13/cobra/compare/v1.4.0...v1.5.0
Configuration
đ Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
đŚ Automerge: Disabled by config. Please merge this manually once you are satisfied.
âť Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
đ Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, click this checkbox.
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
v1.4.0
->v1.5.0
Release Notes
spf13/cobra
### [`v1.5.0`](https://togithub.com/spf13/cobra/releases/tag/v1.5.0) [Compare Source](https://togithub.com/spf13/cobra/compare/v1.4.0...v1.5.0) #### Spring 2022 Release đĽď¸ Hello everyone! Welcome to another release of cobra. Completions continue to get better and better. This release adds a few really cool new features. We also continue to patch versions of our dependencies as they become available via dependabot. Happy coding! #### Active help đđź Shout out to [@marckhouzam](https://togithub.com/marckhouzam) for a big value add: Active Help [https://github.com/spf13/cobra/pull/1482](https://togithub.com/spf13/cobra/pull/1482). With active help, a program can provide some inline warnings or hints for users as they hit tab. Now, your CLIs can be even more intuitive to use! Currently active help is only supported for bash V2 and zsh. Marc wrote a whole guide on how to do this, so make sure to give it a good read to learn how you can add this to your cobra code! https://github.com/spf13/cobra/blob/master/active_help.md #### Group flags đ§đźâđ¤âđ§đź Cobra now has the ability to mark flags as required or exclusive as a ***group***. Shout out to our newest maintainer [@johnSchnake](https://togithub.com/johnSchnake) for this! [https://github.com/spf13/cobra/pull/1654](https://togithub.com/spf13/cobra/pull/1654) Let's say you have a `username` flag that ***MUST*** be partnered with a `password` flag. Well, now, you can enforce those as being required together: ```go rootCmd.Flags().StringVarP(&u, "username", "u", "", "Username (required if password is set)") rootCmd.Flags().StringVarP(&pw, "password", "p", "", "Password (required if username is set)") rootCmd.MarkFlagsRequiredTogether("username", "password") ``` Flags may also be marked as "mutally exclusive" with the `MarkFlagsMutuallyExclusive(string, string ... )` command API. Refer to our [user guide documentation](https://togithub.com/spf13/cobra/blob/master/user_guide.md) for further info! #### Completions đ - Add backwards-compatibility tests for legacyArgs() by [@marckhouzam](https://togithub.com/marckhouzam) in [https://github.com/spf13/cobra/pull/1547](https://togithub.com/spf13/cobra/pull/1547) - feat: Add how to load completions in your current zsh session by [@ondrejsika](https://togithub.com/ondrejsika) in [https://github.com/spf13/cobra/pull/1608](https://togithub.com/spf13/cobra/pull/1608) - Introduce FixedCompletions by [@emersion](https://togithub.com/emersion) in [https://github.com/spf13/cobra/pull/1574](https://togithub.com/spf13/cobra/pull/1574) - Add shell completion to flag groups by [@marckhouzam](https://togithub.com/marckhouzam) in [https://github.com/spf13/cobra/pull/1659](https://togithub.com/spf13/cobra/pull/1659) - Modify brew prefix path in macOS system by [@imxw](https://togithub.com/imxw) in [https://github.com/spf13/cobra/pull/1719](https://togithub.com/spf13/cobra/pull/1719) - perf(bash-v2): use backslash escape string expansion for tab by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1682](https://togithub.com/spf13/cobra/pull/1682) - style(bash-v2): out is not an array variable, do not refer to it as such by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1681](https://togithub.com/spf13/cobra/pull/1681) - perf(bash-v2): standard completion optimizations by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1683](https://togithub.com/spf13/cobra/pull/1683) - style(bash): out is not an array variable, do not refer to it as such by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1684](https://togithub.com/spf13/cobra/pull/1684) - perf(bash-v2): short-circuit descriptionless candidate lists by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1686](https://togithub.com/spf13/cobra/pull/1686) - perf(bash-v2): speed up filtering entries with descriptions by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1689](https://togithub.com/spf13/cobra/pull/1689) - perf(bash-v2): speed up filtering menu-complete descriptions by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1692](https://togithub.com/spf13/cobra/pull/1692) - fix(bash-v2): skip empty completions when filtering descriptions by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1691](https://togithub.com/spf13/cobra/pull/1691) - perf(bash-v2): read directly to COMPREPLY on descriptionless short circuit by [@scop](https://togithub.com/scop) in [https://github.com/spf13/cobra/pull/1700](https://togithub.com/spf13/cobra/pull/1700) - fix: Don't complete \_command on zsh by [@twpayne](https://togithub.com/twpayne) in [https://github.com/spf13/cobra/pull/1690](https://togithub.com/spf13/cobra/pull/1690) - Improve fish_completions code quality by [@t29kida](https://togithub.com/t29kida) in [https://github.com/spf13/cobra/pull/1515](https://togithub.com/spf13/cobra/pull/1515) - Fix handling of descriptions for bash v3 by [@marckhouzam](https://togithub.com/marckhouzam) in [https://github.com/spf13/cobra/pull/1735](https://togithub.com/spf13/cobra/pull/1735) - undefined or nil Args default to ArbitraryArgs by [@umarcor](https://togithub.com/umarcor) in [https://github.com/spf13/cobra/pull/1612](https://togithub.com/spf13/cobra/pull/1612) - Add Command.SetContext by [@joshcarp](https://togithub.com/joshcarp) in [https://github.com/spf13/cobra/pull/1551](https://togithub.com/spf13/cobra/pull/1551) - Wrap printf tab with quotes by [@PapaCharlie](https://togithub.com/PapaCharlie) in [https://github.com/spf13/cobra/pull/1665](https://togithub.com/spf13/cobra/pull/1665) #### Documentation đ - Fixed typos in completions docs - [@cuishuang](https://togithub.com/cuishuang) [https://github.com/spf13/cobra/pull/1625](https://togithub.com/spf13/cobra/pull/1625) - Removed `CHANGELOG.md` as it isn't updated - [@johnSchnake](https://togithub.com/johnSchnake) [https://github.com/spf13/cobra/pull/1634](https://togithub.com/spf13/cobra/pull/1634) - Minor typo fix in `shell_completion.md` - [@danieldn](https://togithub.com/danieldn) [https://github.com/spf13/cobra/pull/1678](https://togithub.com/spf13/cobra/pull/1678) - Changed branch name in the cobra generator link to 'main' - [@skywalker2909](https://togithub.com/skywalker2909) [https://github.com/spf13/cobra/pull/1645](https://togithub.com/spf13/cobra/pull/1645) - Fix Command.Context comment by [@katexochen](https://togithub.com/katexochen) in [https://github.com/spf13/cobra/pull/1639](https://togithub.com/spf13/cobra/pull/1639) - Change appropriate links from http:// to https:// where applicable - [@deining](https://togithub.com/deining) [https://github.com/spf13/cobra/pull/1695](https://togithub.com/spf13/cobra/pull/1695) #### Testing & CI âď¸ - Test on Golang 1.18 - [@umarcor](https://togithub.com/umarcor) [https://github.com/spf13/cobra/pull/1635](https://togithub.com/spf13/cobra/pull/1635) - Use `RICHGO_FORCE_COLOR` - [@umarcor](https://togithub.com/umarcor) [https://github.com/spf13/cobra/pull/1647](https://togithub.com/spf13/cobra/pull/1647) - Adds size labeler GitHub action by [@jpmcb](https://togithub.com/jpmcb) in [https://github.com/spf13/cobra/pull/1610](https://togithub.com/spf13/cobra/pull/1610) - Update `stale-bot` settings - [@jpmcb](https://togithub.com/jpmcb) [https://github.com/spf13/cobra/pull/1609](https://togithub.com/spf13/cobra/pull/1609) #### Beep boop, bot commits đ¤ - Bumped golangci/golangci-lint-action from 3.1.0 to 3.2.0 - [@dependabot](https://togithub.com/dependabot) [https://github.com/spf13/cobra/pull/1697](https://togithub.com/spf13/cobra/pull/1697) - Bump codelytv/pr-size-labeler from 1.8.0 to 1.8.1 - [@dependabot](https://togithub.com/dependabot) [https://github.com/spf13/cobra/pull/1661](https://togithub.com/spf13/cobra/pull/1661) - Bump actions/stale from 1 to 5 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1618](https://togithub.com/spf13/cobra/pull/1618) - Bump actions/cache from 2 to 3 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1640](https://togithub.com/spf13/cobra/pull/1640) - Bump actions/labeler from 3 to 4 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1620](https://togithub.com/spf13/cobra/pull/1620) - Bump golangci/golangci-lint-action from 2 to 3.1.0 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1615](https://togithub.com/spf13/cobra/pull/1615) - Bump actions/checkout from 2 to 3 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1619](https://togithub.com/spf13/cobra/pull/1619) - Bump github.com/cpuguy83/go-md2man/v2 from 2.0.1 to 2.0.2 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1688](https://togithub.com/spf13/cobra/pull/1688) - Bump actions/setup-go from 2 to 3 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/spf13/cobra/pull/1660](https://togithub.com/spf13/cobra/pull/1660) #### Misc đ - Use `errors.Is()` to check for errors - [@Luap99](https://togithub.com/Luap99) [https://github.com/spf13/cobra/pull/1730](https://togithub.com/spf13/cobra/pull/1730) - Prefer ReplaceAll instead of Replace(..., -1) by [@WhyNotHugo](https://togithub.com/WhyNotHugo) in [https://github.com/spf13/cobra/pull/1530](https://togithub.com/spf13/cobra/pull/1530) - Add Kubescape to projects - [@avinashupadhya99](https://togithub.com/avinashupadhya99) [https://github.com/spf13/cobra/pull/1642](https://togithub.com/spf13/cobra/pull/1642) - Add Pulumi as a project using cobra by [@iwahbe](https://togithub.com/iwahbe) in [https://github.com/spf13/cobra/pull/1720](https://togithub.com/spf13/cobra/pull/1720) - Add Polygon Edge as a project using Cobra by [@zivkovicmilos](https://togithub.com/zivkovicmilos) in [https://github.com/spf13/cobra/pull/1672](https://togithub.com/spf13/cobra/pull/1672) Shoutout to *ALL* our contributors (and all the new first time contributors!!) - great work everyone!! Cobra and it's huge impact wouldn't be possible without you đđź đ đ **Full Changelog**: https://github.com/spf13/cobra/compare/v1.4.0...v1.5.0Configuration
đ Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
đŚ Automerge: Disabled by config. Please merge this manually once you are satisfied.
âť Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
đ Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.