Releases: spf13/cobra
v1.10.1
v1.10.0
What's Changed
π¨ Attention!
- Bump pflag to 1.0.8 by @tomasaschan in #2303
This version of pflag
carried a breaking change: it renamed ParseErrorsWhitelist
to ParseErrorsAllowlist
which can break builds if both pflag
and cobra
are dependencies in your project.
- If you use both
pflag and
cobra, upgrade
pflagto 1.0.8 and
cobrato
1.10.0` - or use the newer, fixed version of
pflag
v1.0.9 which keeps the deprecatedParseErrorsWhitelist
More details can be found here: #2303 (comment)
β¨ Features
- Flow context to command in SetHelpFunc by @Frassle in #2241
- The default ShellCompDirective can be customized for a command and its subcommands by @albers in #2238
π Fix
πͺ Testing
π Docs
- Remove traling curlybrace by @yedayak in #2237
- Update command.go by @styee in #2248
- feat: Add security policy by @jpmcb in #2253
- Update Readme (Warp) by @ericdachen in #2267
- Add Periscope to the list of projects using Cobra by @anishathalye in #2299
New Contributors
- @harryzcy made their first contribution in #2236
- @yedayak made their first contribution in #2237
- @Frassle made their first contribution in #2241
- @styee made their first contribution in #2248
- @ericdachen made their first contribution in #2267
- @albers made their first contribution in #2238
- @anishathalye made their first contribution in #2299
- @tomasaschan made their first contribution in #2303
Full Changelog: v1.9.1...v1.9.2
v1.9.1
π Fixes
- Fix CompletionFunc implementation by @ccoVeille in #2234
- Revert "Make detection for test-binary more universal (#2173)" by @marckhouzam in #2235
Full Changelog: v1.9.0...v1.9.1
v1.9.0
β¨ Features
- Allow linker to perform deadcode elimination for program using Cobra by @aarzilli in #1956
- Add default completion command even if there are no other sub-commands by @marckhouzam in #1559
- Add CompletionWithDesc helper by @ccoVeille in #2231
π Fixes
- Fix deprecation comment for Command.SetOutput by @thaJeztah in #2172
- Replace deprecated ioutil usage by @nirs in #2181
- Fix --version help and output for plugins by @nirs in #2180
- Allow to reset the templates to the default by @marckhouzam in #2229
π€ Completions
- Make Powershell completion work in constrained mode by @lstemplinger in #2196
- Improve detection for flags that accept multiple values by @thaJeztah in #2210
- add CompletionFunc type to help with completions by @ccoVeille in #2220
- Add similar whitespace escape logic to bash v2 completions than in other completions by @kangasta in #1743
- Print ActiveHelp for bash along other completions by @marckhouzam in #2076
- fix(completions): Complete map flags multiple times by @gabe565 in #2174
- fix(bash): nounset unbound file filter variable on empty extension by @scop in #2228
π§ͺ Testing
- Test also with go 1.23 by @nirs in #2182
- Make detection for test-binary more universal by @thaJeztah in #2173
βπΌ Documentation
- docs: update README.md by @eltociear in #2197
- Improve site formatting by @nirs in #2183
- doc: add Conduit by @raulb in #2230
- doc: azion project added to the list of CLIs that use cobra by @maxwelbm in #2198
- Fix broken links in active_help.md by @vuil in #2202
- chore: fix function name in comment by @zhuhaicity in #2216
π§ Dependency upgrades
- build(deps): bump github.com/cpuguy83/go-md2man/v2 from 2.0.5 to 2.0.6 by @thaJeztah in #2206
- Update to latest go-md2man by @mikelolasagasti in #2201
- Upgrade
pflag
dependencies for v1.9.0 by @jpmcb in #2233
Thank you to all of our amazing contributors and all the great work that's been going into the completions feature!!
ππΌ New Contributors
- @gabe565 made their first contribution in #2174
- @maxwelbm made their first contribution in #2198
- @lstemplinger made their first contribution in #2196
- @vuil made their first contribution in #2202
- @mikelolasagasti made their first contribution in #2201
- @zhuhaicity made their first contribution in #2216
- @ccoVeille made their first contribution in #2220
- @kangasta made their first contribution in #1743
- @aarzilli made their first contribution in #1956
Full Changelog: v1.8.1...v1.9.0
v1.8.1
β¨ Features
π Bug fixes
π§ Maintenance
- build(deps): bump github.com/cpuguy83/go-md2man/v2 from 2.0.3 to 2.0.4 by @dependabot in #2127
- Consistent annotation names by @nirs in #2140
- Remove fully inactivated linters by @nirs in #2148
- Address golangci-lint deprecation warnings, enable some more linters by @scop in #2152
π§ͺ Testing & CI/CD
- Add test for func in cobra.go by @korovindenis in #2094
- ci: test golang 1.22 by @cyrilico in #2113
- Optimized and added more linting by @scop in #2099
- build(deps): bump actions/setup-go from 4 to 5 by @dependabot in #2087
- build(deps): bump actions/labeler from 4 to 5 by @dependabot in #2086
- build(deps): bump golangci/golangci-lint-action from 3.7.0 to 4.0.0 by @dependabot in #2108
- build(deps): bump actions/cache from 3 to 4 by @dependabot in #2102
βοΈ Documentation
- Fixes and docs for usage as plugin by @nirs in #2070
- flags: clarify documentation that LocalFlags related function do not modify the state by @niamster in #2064
- chore: remove repetitive words by @racerole in #2122
- Add LXC to the list of projects using Cobra @VaradBelwalkar in #2071
- Update projects_using_cobra.md by @marcuskohlberg in #2089
- [chore]: update projects using cobra by @cmwylie19 in #2093
- Add Taikun CLI to list of projects by @Smidra in #2098
- Add Incus to the list of projects using Cobra by @montag451 in #2118
New Contributors
- @VaradBelwalkar made their first contribution in #2071
- @marcuskohlberg made their first contribution in #2089
- @cmwylie19 made their first contribution in #2093
- @korovindenis made their first contribution in #2094
- @niamster made their first contribution in #2064
- @Smidra made their first contribution in #2098
- @montag451 made their first contribution in #2118
- @cyrilico made their first contribution in #2113
- @racerole made their first contribution in #2122
- @pedromotita made their first contribution in #2120
- @cubxxw made their first contribution in #2128
Thank you everyone who contributed to this release and all your hard work! Cobra and this community would never be possible without all of you!!!! π
Full Changelog: v1.8.0...v1.8.1
v1.8.0
β¨ Features
- Support usage as plugin for tools like kubectl by @nirs in #2018 - this means that programs that utilize a "plugin-like" structure have much better support and usage (like for completions, command paths, etc.)
- Move documentation sources to site/content by @umarcor in #1428
- Add 'one required flag' group by @marevers in #1952 - this includes a new
MarkFlagsOneRequired
API for flags which can be used to mark a flag group as required and cause command failure if at least one is not used when invoked. - Customizable error message prefix by @5ouma in #2023 - This adds the
SetErrPrefix
andErrPrefix
APIs on theCommand
struct to allow for setting a custom prefix for errors - feat: add getters for flag completions by @avirtopeanu-ionos in #1943
- Feature: allow running persistent run hooks of all parents by @vkhoroz in #2044
- Improve API to get flag completion function by @marckhouzam in #2063
π Bug fixes
- Fix typo in fish completions by @twpayne in #1945
- Fix grammar: 'allows to' by @supertassu in #1978
- powershell: escape variable with curly brackets by @Luap99 in #1960
- Don't complete --help flag when flag parsing disabled by @marckhouzam in #2061
- Replace all non-alphanumerics in active help env var program prefix by @scop in #1940
π§ Maintenance
- build(deps): bump golangci/golangci-lint-action from 3.4.0 to 3.5.0 by @dependabot in #1971
- build(deps): bump golangci/golangci-lint-action from 3.5.0 to 3.6.0 by @dependabot in #1976
- build(deps): bump golangci/golangci-lint-action from 3.6.0 to 3.7.0 by @dependabot in #2021
- build(deps): bump actions/setup-go from 3 to 4 by @dependabot in #1934
- build(deps): bump github.com/cpuguy83/go-md2man/v2 from 2.0.2 to 2.0.3 by @dependabot in #2047
- build(deps): bump actions/checkout from 3 to 4 by @dependabot in #2028
- command: temporarily disable G602 due to securego/gosec#1005 by @umarcor in #2022
π§ͺ Testing & CI/CD
- test: make fish_completions_test more robust by @branchvincent in #1980
- golangci: enable 'unused' and disable deprecated replaced by it by @umarcor in #1983
- cleanup: minor corrections to unit tests by @JunNishimura in #2003
- ci: test golang 1.21 by @nunoadrego in #2024
- Fix linter errors by @marckhouzam in #2052
- Add tests for flag completion registration by @marckhouzam in #2053
βοΈ Documentation
- doc: fix typo, Deperecated -> Deprecated by @callthingsoff in #2000
- Add notes to doc about the execution condition of *PreRun and *PostRun functions by @haoming29 in #2041
Thank you everyone who contributed to this release and all your hard work! Cobra and this community would never be possible without all of you!!!! π
Full Changelog: v1.7.0...v1.8.0
v1.7.0
β¨ Features
- Allow to preserve ordering of completions in
bash
,zsh
,pwsh
, &fish
: @h4ck3rk3y #1903 - Add support for PowerShell 7.2+ in completions: @oldium #1916
- Allow sourcing zsh completion script: @marckhouzam #1917
π Bug fixes
- Don't remove flag values that match sub-command name: @brianpursley #1781
- Fix powershell completions not returning single word: @totkeks #1850
- Remove masked
template
import variable name: @yashLadha #1879 - Correctly detect completions with dash in argument: @oncilla #1817
π§ͺ Testing & CI/CD
- Deprecate Go 1.15 in CI: @umarcor #1866
- Deprecate Go 1.16 in CI: @umarcor #1926
- Add testing for Go 1.20 in CI: @umarcor #1925
- Add tests to illustrate unknown flag bug: @brianpursley #1854
π§ Maintenance
- Update main image to better handle dark backgrounds: @Deleplace and @marckhouzam #1883
- Fix
stale.yaml
mispellings: @enrichman #1863 - Remove stale bot from GitHub actions: @jpmcb #1908
- Add makefile target for installing dependencies: @umarcor #1865
- Add Sia to projects using Cobra: @mike76-dev #1844
- Add
Vitess
andArewefastyet
to projects using cobra: @frouioui #1932 - Fixup for Kubescape github org: @dwertent #1874
- Fix route for GitHub workflows badge: @sh-cho #1884
- Fixup for GoDoc style documentation: @yashLadha #1885
- Various bash scripting improvements for completion: @scop #1702
- Add Constellation to projects using Cobra: @datosh #1829
βοΈ Documentation
- Add documentation about disabling completion descriptions: @Shihta #1901
- Improve
MarkFlagsMutuallyExclusive
example in user guide: @janhn #1904 - Update
shell_completions.md
: @gusega #1907 - Update copywrite year: @umarcor #1927
- Document suggested layout of subcommands: @lcarva #1930
- Replace deprecated ExactValidArgs with MatchAll in doc: @doniacld #1836
This release contains several long running fixes, improvements to powershell completions, and further optimizations for completions.
Thank you everyone who contributed to this release and all your hard work! Cobra and this community would never be possible without all of you! π
Full changelog: v1.6.1...v1.7.0
v1.6.1
Bug fixes π
- Fixes a panic when
AddGroup
isn't called beforeAddCommand(my-sub-command)
is executed. This can happen within more complex cobra file structures that have many differentinit
s to be executed. Now, the check for groups has been moved toExecuteC
and provides more flexibility when working with grouped commands - @marckhouzam (and shout out to @aawsome, @andig and @KINGSABRI for a deep investigation into this! ππΌ)
v1.6.0
Summer 2022 Release
Some exciting changes make their way to Cobra! Command completions continue to get better and better (including adding --help
and --version
automatic flags to the completions list). Grouping is now possible in your help output as well! And you can now use the OnFinalize
method to cleanup things when all "work" is done. Checkout the full changelog below:
Features π
- Add groups for commands in help: @aawsome @marckhouzam #1003
- Support for case-insensitive command names: @YuviGold #1802
- Expose
ValidateRequiredFlags
andValidateFlagGroups
: @skeetwu #1760 - Add
--version
flag to help output: @fnickels #1707 - Add
--help
and--version
flag in completions: @marckhouzam #1813 - Add
OnFinalize
method: @yann-soubeyrand #1788 - Allow user to add completion for powershell alias: @marckhouzam #1621
- Make
InitDefaultcompletionCmd
public: @gssbzn #1467
Deprecation ππΌ
ExactValidArgs
is deprecated (but not being removed entirely). This is abit nuanced, so checkout #1643 for further information and the updateduser_guide.md
on how this may affect you (and how you can take advantage of the correct behavior in the validators): @umarcor #1643
Bug fixes π
- Fix (bash-v2)
activeHelp
length check syntax: @scop #1762 - Fix correct command path in
see_also
for yaml documentation: @zregvart #1771 - Fix showing flags that shadow parent persistent flag in child help messaging: @brianpursley #1776
Dependencies π³οΈ
Testing π€
- Test on Golang 1.19: @umarcor & @jpmcb #1782
- Renamed powershell completion tests: @marckhouzam #1803
- Use
action/setup-go
cache: @umarcor #1783 - Add
workflow_dispatch
to CI actions: @umarcor #1387 - Add minimum GitHub token permissions for workflows: @varunsh-coder #1792
Docs βοΈ
- Fixup spelling for GitHub CLI: @eltociear #1744
- Clarify
SetContext
documentation: @katexochen #1748 - Instruct user to
go install
for binary: @marckhouzam #1726 - User guide cleanup: @marckhouzam #1656
- Document option to hide the default completion command: @marckhouzam #1779
Misc π
- Add KubeVirt, CloudQuery, Cilium, Okteto, Zitadel, Allero to projects using cobra: @maiqueb #1741, @yevgenypats #1742, @tklauser #1745, @jLopezbarb #1759, @fforootd #1772, @dimabru #1819
- Use correct stale action
exempt
yaml keys: @jpmcb #1800 - Add missing license headers: @umarcor #1809
Note: Per #1804, we will be moving away from "seasonal" releases and doing more generic point release targets. Continue to track the milestones and issues in the spf13/cobra
GitHub repository for more information!
Great work everyone! Cobra would never be possible without your contributions! π
Full Changelog: v1.5.0...v1.6.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 for a big value add: Active Help #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! #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 #1547
- feat: Add how to load completions in your current zsh session by @ondrejsika in #1608
- Introduce FixedCompletions by @emersion in #1574
- Add shell completion to flag groups by @marckhouzam in #1659
- Modify brew prefix path in macOS system by @imxw in #1719
- perf(bash-v2): use backslash escape string expansion for tab by @scop in #1682
- style(bash-v2): out is not an array variable, do not refer to it as such by @scop in #1681
- perf(bash-v2): standard completion optimizations by @scop in #1683
- style(bash): out is not an array variable, do not refer to it as such by @scop in #1684
- perf(bash-v2): short-circuit descriptionless candidate lists by @scop in #1686
- perf(bash-v2): speed up filtering entries with descriptions by @scop in #1689
- perf(bash-v2): speed up filtering menu-complete descriptions by @scop in #1692
- fix(bash-v2): skip empty completions when filtering descriptions by @scop in #1691
- perf(bash-v2): read directly to COMPREPLY on descriptionless short circuit by @scop in #1700
- fix: Don't complete _command on zsh by @twpayne in #1690
- Improve fish_completions code quality by @t29kida in #1515
- Fix handling of descriptions for bash v3 by @marckhouzam in #1735
- undefined or nil Args default to ArbitraryArgs by @umarcor in #1612
- Add Command.SetContext by @joshcarp in #1551
- Wrap printf tab with quotes by @PapaCharlie in #1665
Documentation π
- Fixed typos in completions docs - @cuishuang #1625
- Removed
CHANGELOG.md
as it isn't updated - @johnSchnake #1634 - Minor typo fix in
shell_completion.md
- @danieldn #1678 - Changed branch name in the cobra generator link to 'main' - @skywalker2909 #1645
- Fix Command.Context comment by @katexochen in #1639
- Change appropriate links from http:// to https:// where applicable - @deining #1695
Testing & CI βοΈ
- Test on Golang 1.18 - @umarcor #1635
- Use
RICHGO_FORCE_COLOR
- @umarcor #1647 - Adds size labeler GitHub action by @jpmcb in #1610
- Update
stale-bot
settings - @jpmcb #1609
Beep boop, bot commits π€
- Bumped golangci/golangci-lint-action from 3.1.0 to 3.2.0 - @dependabot #1697
- Bump codelytv/pr-size-labeler from 1.8.0 to 1.8.1 - @dependabot #1661
- Bump actions/stale from 1 to 5 by @dependabot in #1618
- Bump actions/cache from 2 to 3 by @dependabot in #1640
- Bump actions/labeler from 3 to 4 by @dependabot in #1620
- Bump golangci/golangci-lint-action from 2 to 3.1.0 by @dependabot in #1615
- Bump actions/checkout from 2 to 3 by @dependabot in #1619
- Bump github.com/cpuguy83/go-md2man/v2 from 2.0.1 to 2.0.2 by @dependabot in #1688
- Bump actions/setup-go from 2 to 3 by @dependabot in #1660
Misc π
- Use
errors.Is()
to check for errors - @Luap99 #1730 - Prefer ReplaceAll instead of Replace(..., -1) by @WhyNotHugo in #1530
- Add Kubescape to projects - @avinashupadhya99 #1642
- Add Pulumi as a project using cobra by @iwahbe in #1720
- Add Polygon Edge as a project using Cobra by @zivkovicmilos in #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: v1.4.0...v1.5.0