Skip to content

Releases: spf13/cobra

v1.8.0

04 Nov 21:06
a0a6ae0
Compare
Choose a tag to compare

✨ 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 and ErrPrefix APIs on the Command 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

πŸ”§ Maintenance

πŸ§ͺ Testing & CI/CD

✏️ 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

04 Apr 14:43
4dd4b25
Compare
Choose a tag to compare

✨ Features

πŸ› Bug fixes

πŸ§ͺ Testing & CI/CD

πŸ”§ Maintenance

✏️ Documentation


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

24 Oct 23:03
b43be99
Compare
Choose a tag to compare

Bug fixes πŸ›

  • Fixes a panic when AddGroup isn't called before AddCommand(my-sub-command) is executed. This can happen within more complex cobra file structures that have many different inits to be executed. Now, the check for groups has been moved to ExecuteC 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

11 Oct 15:37
8607918
Compare
Choose a tag to compare

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 🌠

Deprecation πŸ‘ŽπŸΌ

  • ExactValidArgs is deprecated (but not being removed entirely). This is abit nuanced, so checkout #1643 for further information and the updated user_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 πŸ€”

Docs ✏️

Misc πŸ’­

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

21 Jun 02:37
06b06a9
Compare
Choose a tag to compare

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 πŸ“

Testing & CI βš™οΈ

Beep boop, bot commits πŸ€–

Misc πŸ’­

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

v1.4.0

10 Mar 15:57
5b2b9e9
Compare
Choose a tag to compare

Winter 2022 Release ❄️

Another season, another release!

Goodbye viper! 🐍 πŸš€

The core Cobra library no longer requires Viper and all of its indirect dependencies. This means that Cobra's dependency tree has been drastically thinned! The Viper dependency was included because of the cobra CLI generation tool. This tool has migrated to spf13/cobra-cli.

It's pretty unlikely you were importing and using the bootstrapping CLI tool as part of your application (after all, it's just a tool to get going with core cobra).

But if you were, replace occurrences of

"github.com/spf13/cobra/cobra"

with

"github.com/spf13/cobra-cli"

And in your go.mod, you'll want to also include this dependency:

github.com/spf13/cobra-cli v1.3.0

Again, the maintainers do not anticipate this being a breaking change to users of the core cobra library, so minimal work should be required for users to integrate with this new release. Moreover, this means the dependency tree for your application using Cobra should no longer require dependencies that were inherited from Viper. Huzzah! πŸ₯³

If you'd like to read more

Documentation πŸ“

  • Update Go Doc link and badge in README: #1593
  • Fix to install command, now targets @latest: #1576
  • Added MAINTAINERS file: #1545

Other πŸ’­

  • Bumped license year to 2022 in golden files: #1575
  • Added Pixie to projects: #1581
  • Updated labeler for new labeling scheme: #1613 & syntax fix: #1624

Shoutout to our awesome contributors helping to make this cobra release possible!!
@spf13 @marckhouzam @johnSchnake @jpmcb @liggitt @umarcor @hiljusti @marians @shyim @htroisi

v1.3.0

14 Dec 19:05
178edbb
Compare
Choose a tag to compare

v1.3.0 - The Fall 2021 release 🍁

Completion fixes & enhancements πŸ’‡πŸΌ

In v1.2.0, we introduced a new model for completions. Thanks to everyone for trying it, giving feedback, and providing numerous fixes! Continue to work with the new model as the old one (as noted in code comments) will be deprecated in a coming release.

  • DisableFlagParsing now triggers custom completions for flag names #1161
  • Fixed unbound variables in bash completions causing edge case errors #1321
  • help completion formatting improvements & fixes #1444
  • All completions now follow the help example: short desc are now capitalized and removes extra spacing from long description #1455
  • Typo fixes in bash & zsh completions #1459
  • Fixed mixed tab/spaces indentation in completion scripts. Now just 4 spaces #1473
  • Support for different bash completion options. Bash completions v2 supports descriptions and requires descriptions to be removed for menu-complete, menu-complete-backward and insert-completions. These descriptions are now purposefully removed in support of this model. #1509
  • Fix for invalid shell completions when using ~/.cobra.yaml. Log message Using config file: ~/.cobra.yaml now printed to stderr #1510
  • Removes unnecessary trailing spaces from completion command descriptions #1520
  • Option to hide default completion command #1541
  • Remove __complete command for programs without subcommands #1563

Generator changes βš™οΈ

Thanks to @spf13 for providing a number of changes to the Cobra generator tool, streamlining it for new users!

  • The Cobra generator now won't automatically include Viper and cleans up a number of unused imports when not using Viper.
  • The Cobra generator's default license is now none
  • The Cobra generator now works with Go modules
  • Documentation to reflect these changes

New Features ⭐

  • License can be specified by their SPDX identifiers #1159
  • MatchAll allows combining several PositionalArgs to work in concert. This now allows for enabling composing PositionalArgs #896

Bug Fixes πŸ›

  • Fixed multiple error message from cobra init boilerplates #1463 #1552 #1557

Testing πŸ‘€

  • Now testing golang 1.16.x and 1.17.x in CI #1425
  • Fix for running diff test to ignore CR for windows #949
  • Added helper functions and reduced code reproduction in args_test #1426
  • Now using official golangci-lint github action #1477

Security πŸ”

  • Added GitHub dependabot #1427
  • Now using Viper v1.10.0
    • There is a known CVE in an indirect dependency from viper: #1538. This will be patched in a future release

Documentation πŸ“

  • Multiple projects added to the projects_using_cobra.md file: #1377 #1501 #1454
  • Removed ToC from main readme file as it is now automagically displayed by GitHub #1429
  • Documentation correct for when the --author flag is specified #1009
  • shell_completions.md has an easier to use snippet for copying and pasting shell completions #1372

Other πŸ’­

  • Bump version of cpuguy83/go-md2man to v2.0.1 #1460
  • Removed lesser typo from the GPL-2.0 license #880
  • Fixed spelling errors #1514

Thank you to all our amazing contributors β­πŸπŸš€

v1.2.1

02 Jul 15:28
de187e8
Compare
Choose a tag to compare

Bug fixes

  • Quickfix for #1437 after v1.2.0 where parallel use of the cmd.RegisterFlagCompletionFunc() (and subsequent map) now works correctly and flag completions now work again

v1.2.0 - The completions release

01 Jul 17:41
07861c8
Compare
Choose a tag to compare

🌠 v1.2.0 - The completions release

Welcome to v1.2.0 of Cobra! This release focuses on code completions, several critical bug fixes, some documentation updates, and security bumps. Upgrading should be simple but please take note of the introduction of bash completions V2 and their default use. The v1 completions library is still available, but will be deprecated in the future. Please open an issue with any problems!


New Features

  • Automatically adds a completion command for shell completions. If a completion command is already provided, uses that instead. This will automatically provide shell completions for bash, zsh, fish, and PowerShell #1192
    • Users can configure the command auto creation:
      • disable the creation of the completion command
      • disable completion descriptions
      • disable the --no-descriptions flag for "always on" completion descriptions
  • Introduction of bash completions V2, a uniform completion approach which include completion descriptions. The V1 bash completions are still available but will be deprecated in a later release - #1146
    • Note that projects providing completion through a different command name (say a command named "complete") will continue to use v1 for their own command but will also provide cobra's implicit "completion" command which will use v2, unless of course, these projects take the time to disable the default "completion" command as noted above.
  • Commands now support context being passed to completions - #1265
  • Removed dependency onmitchellh/go-homedir in favor of core Go os.UserHomeDir() - 8eaca5f

Bug Fixes

  • Fix trailing whitespace not being handled in powershell completion scripts #1342
  • Bash completion variable leak fix #1352
  • Fish shell completions correctly ignore trailing empty lines #1284
  • PowerShell completions fix for "no file comp directive" - #1363
  • Custom completions now correctly handle multiple shorthand flags together - #1258
  • zsh completions now correctly handle ShellDirectiveCompletionNoSpace and file completion all the time - #1213
  • Multiple fixes / improvements to the fish shell support - #1249
  • Fix home directory config not loading correctly - #1282
  • Fix for RegisterFlagCompletionFunc as a global var not working in multi-threaded programs: #1423
  • Custom completions correctly do not complete flags after args when interspersed is false #1308

Testing

  • Deprecated Travis CI. Now fully using Github Actions - d0f318d
  • Added test cases and enhancements (thank you to everyone for taking the time to add tests to your PRs!)
  • Shoutout to @marckhouzam and @Luap99 for their hard work on a cobra command completions testing library. Check out the repo here!

Security

  • Bump viper to 1.8.1. This corrects several issues with vulnerabilities existing in the dependency tree - #1433

Other

  • Add PR labeler with pull_request_target to enable tests to run from forks - #1338
  • CI using MSYS2 windows machines pull latest - #1366
  • Multiple small fixes to spelling / documentation - #1349 #1417 #1434

Thank you to all our amazing contributors πŸπŸš€

v1.1.3

10 Feb 19:42
8380ddd
Compare
Choose a tag to compare
  • Fix: release-branch.cobra1.1 only: Revert "Deprecate Go < 1.14" to maintain backward compatibility