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 for a big value add: Active Help https://github.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 for this! https://github.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:
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 for further info!
Completions ๐
- Add backwards-compatibility tests for legacyArgs() by @marckhouzam in https://github.com/spf13/cobra/pull/1547
- feat: Add how to load completions in your current zsh session by @ondrejsika in https://github.com/spf13/cobra/pull/1608
- Introduce FixedCompletions by @emersion in https://github.com/spf13/cobra/pull/1574
- Add shell completion to flag groups by @marckhouzam in https://github.com/spf13/cobra/pull/1659
- Modify brew prefix path in macOS system by @imxw in https://github.com/spf13/cobra/pull/1719
- perf(bash-v2): use backslash escape string expansion for tab by @scop in https://github.com/spf13/cobra/pull/1682
- style(bash-v2): out is not an array variable, do not refer to it as such by @scop in https://github.com/spf13/cobra/pull/1681
- perf(bash-v2): standard completion optimizations by @scop in https://github.com/spf13/cobra/pull/1683
- style(bash): out is not an array variable, do not refer to it as such by @scop in https://github.com/spf13/cobra/pull/1684
- perf(bash-v2): short-circuit descriptionless candidate lists by @scop in https://github.com/spf13/cobra/pull/1686
- perf(bash-v2): speed up filtering entries with descriptions by @scop in https://github.com/spf13/cobra/pull/1689
- perf(bash-v2): speed up filtering menu-complete descriptions by @scop in https://github.com/spf13/cobra/pull/1692
- fix(bash-v2): skip empty completions when filtering descriptions by @scop in https://github.com/spf13/cobra/pull/1691
- perf(bash-v2): read directly to COMPREPLY on descriptionless short circuit by @scop in https://github.com/spf13/cobra/pull/1700
- fix: Don't complete _command on zsh by @twpayne in https://github.com/spf13/cobra/pull/1690
- Improve fish_completions code quality by @t29kida in https://github.com/spf13/cobra/pull/1515
- Fix handling of descriptions for bash v3 by @marckhouzam in https://github.com/spf13/cobra/pull/1735
- undefined or nil Args default to ArbitraryArgs by @umarcor in https://github.com/spf13/cobra/pull/1612
- Add Command.SetContext by @joshcarp in https://github.com/spf13/cobra/pull/1551
- Wrap printf tab with quotes by @PapaCharlie in https://github.com/spf13/cobra/pull/1665
Documentation ๐
- Fixed typos in completions docs - @cuishuang https://github.com/spf13/cobra/pull/1625
- Removed
CHANGELOG.mdas it isn't updated - @johnSchnake https://github.com/spf13/cobra/pull/1634 - Minor typo fix in
shell_completion.md- @danieldn https://github.com/spf13/cobra/pull/1678 - Changed branch name in the cobra generator link to 'main' - @skywalker2909 https://github.com/spf13/cobra/pull/1645
- Fix Command.Context comment by @katexochen in https://github.com/spf13/cobra/pull/1639
- Change appropriate links from http:// to https:// where applicable - @deining https://github.com/spf13/cobra/pull/1695
Testing & CI โ๏ธ
- Test on Golang 1.18 - @umarcor https://github.com/spf13/cobra/pull/1635
- Use
RICHGO_FORCE_COLOR- @umarcor https://github.com/spf13/cobra/pull/1647 - Adds size labeler GitHub action by @jpmcb in https://github.com/spf13/cobra/pull/1610
- Update
stale-botsettings - @jpmcb https://github.com/spf13/cobra/pull/1609
Beep boop, bot commits ๐ค
- Bumped golangci/golangci-lint-action from 3.1.0 to 3.2.0 - @dependabot https://github.com/spf13/cobra/pull/1697
- Bump codelytv/pr-size-labeler from 1.8.0 to 1.8.1 - @dependabot https://github.com/spf13/cobra/pull/1661
- Bump actions/stale from 1 to 5 by @dependabot in https://github.com/spf13/cobra/pull/1618
- Bump actions/cache from 2 to 3 by @dependabot in https://github.com/spf13/cobra/pull/1640
- Bump actions/labeler from 3 to 4 by @dependabot in https://github.com/spf13/cobra/pull/1620
- Bump golangci/golangci-lint-action from 2 to 3.1.0 by @dependabot in https://github.com/spf13/cobra/pull/1615
- Bump actions/checkout from 2 to 3 by @dependabot in https://github.com/spf13/cobra/pull/1619
- Bump github.com/cpuguy83/go-md2man/v2 from 2.0.1 to 2.0.2 by @dependabot in https://github.com/spf13/cobra/pull/1688
- Bump actions/setup-go from 2 to 3 by @dependabot in https://github.com/spf13/cobra/pull/1660
Misc ๐ญ
- Use
errors.Is()to check for errors - @Luap99 https://github.com/spf13/cobra/pull/1730 - Prefer ReplaceAll instead of Replace(..., -1) by @WhyNotHugo in https://github.com/spf13/cobra/pull/1530
- Add Kubescape to projects - @avinashupadhya99 https://github.com/spf13/cobra/pull/1642
- Add Pulumi as a project using cobra by @iwahbe in https://github.com/spf13/cobra/pull/1720
- Add Polygon Edge as a project using Cobra by @zivkovicmilos in https://github.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