Fix printing empty usage and terminate CLI for parsing global flags#57401
Merged
Fix printing empty usage and terminate CLI for parsing global flags#57401
Conversation
hugoShaka
approved these changes
Jul 31, 2025
Tener
reviewed
Aug 1, 2025
Contributor
There was a problem hiding this comment.
The fix works, thank you!
I'd really like to see some test coverage here; kingpin can behave in some rather surprising ways and it should help prevent a regression in that area. Seeing as individual commands are separate we'd likely need multiple copies of such a test.
…ge print is not empty and both identical. Add godoc clarification
Tener
approved these changes
Aug 1, 2025
Tener
reviewed
Aug 1, 2025
This was referenced Aug 1, 2025
Contributor
This was referenced Aug 1, 2025
vapopov
added a commit
that referenced
this pull request
Aug 1, 2025
…57401) * Fix printing empty usage and terminate CLI for parsing global flags * Add test with check of both `--help` flag and `help` command that usage print is not empty and both identical. Add godoc clarification * Disable managed update check for version help command test
vapopov
added a commit
that referenced
this pull request
Aug 1, 2025
…57401) * Fix printing empty usage and terminate CLI for parsing global flags * Add test with check of both `--help` flag and `help` command that usage print is not empty and both identical. Add godoc clarification * Disable managed update check for version help command test
github-merge-queue bot
pushed a commit
that referenced
this pull request
Aug 7, 2025
* Client-tools managed updates version caching (#54563) * Add profile integration to disable update and re-execution for specific cluster * Complete integration for the tctl and tsh * Add commands for tsh * Fix linter warnings * Add config file with version and disabling status * Move check out from helper * Fixed re-execution ignore if versions is identical * Move logic out from client * Remove helper package and profile integration * Fix argument parsing by filtering * Use same Darwin platform approach of package extraction for Linux Add client tools cleanup for V1 directories * Fix packaging unit test * Add cleanup for last recently used tools * Add migration from v1 for better support Show error log message about failed update/re-execution instead of failing command execution in case if updated binary was broken, modified or not able to validate signature * Add ignore the version check fail, add more debug information * Check update for commands `tsh ssh`, `tsh proxy ssh` Fixed creating `.tsh` subdirectory when TELEPORT_HOME is set Fix `tsh --proxy` flag parsing * Wraps client init function to check client tools managed update only when it requested for `tsh ssh` and `tsh proxy ssh` * Move filesystem lock to configuration library Configuration modification protected by lock, other process must wait until it is released * Rename command to `tsh update`, `tsh update --clear` * Add test for argument filtering * Update RFD Make max tools installed to be configurable and set to 3 by default * Replace "automatic updates" to "managed updates" * Updated comments to reflect the latest changes * Fix migration for older versions with two packages * CR changes * Prevent failing tools execution if configuration file is corrupted * Remove lock file as part of cleanup command * Added context to arguments * Use a separate Kingpin application for tctl, as is already done for tsh. Double parsing may cause issues since it is not stateless. * CTMU no longer uses a static path, any re-execution from the tools directory must disable further re-execution * Gracefully fail when cannot do client tools updates (#57142) * Gracefully fail when cannot do client tool update * Gracefully fail when cannot check the version * Fix printing empty usage and terminate CLI for parsing global flags (#57401) * Fix printing empty usage and terminate CLI for parsing global flags * Add test with check of both `--help` flag and `help` command that usage print is not empty and both identical. Add godoc clarification * Disable managed update check for version help command test --------- Co-authored-by: Hugo Shaka <hugo.hervieux@goteleport.com>
github-merge-queue bot
pushed a commit
that referenced
this pull request
Aug 7, 2025
* Client-tools managed updates version caching (#54563) * Add profile integration to disable update and re-execution for specific cluster * Complete integration for the tctl and tsh * Add commands for tsh * Fix linter warnings * Add config file with version and disabling status * Move check out from helper * Fixed re-execution ignore if versions is identical * Move logic out from client * Remove helper package and profile integration * Fix argument parsing by filtering * Use same Darwin platform approach of package extraction for Linux Add client tools cleanup for V1 directories * Fix packaging unit test * Add cleanup for last recently used tools * Add migration from v1 for better support Show error log message about failed update/re-execution instead of failing command execution in case if updated binary was broken, modified or not able to validate signature * Add ignore the version check fail, add more debug information * Check update for commands `tsh ssh`, `tsh proxy ssh` Fixed creating `.tsh` subdirectory when TELEPORT_HOME is set Fix `tsh --proxy` flag parsing * Wraps client init function to check client tools managed update only when it requested for `tsh ssh` and `tsh proxy ssh` * Move filesystem lock to configuration library Configuration modification protected by lock, other process must wait until it is released * Rename command to `tsh update`, `tsh update --clear` * Add test for argument filtering * Update RFD Make max tools installed to be configurable and set to 3 by default * Replace "automatic updates" to "managed updates" * Updated comments to reflect the latest changes * Fix migration for older versions with two packages * CR changes * Prevent failing tools execution if configuration file is corrupted * Remove lock file as part of cleanup command * Added context to arguments * Use a separate Kingpin application for tctl, as is already done for tsh. Double parsing may cause issues since it is not stateless. * CTMU no longer uses a static path, any re-execution from the tools directory must disable further re-execution * Gracefully fail when cannot do client tools updates (#57142) * Gracefully fail when cannot do client tool update * Gracefully fail when cannot check the version * Fix printing empty usage and terminate CLI for parsing global flags (#57401) * Fix printing empty usage and terminate CLI for parsing global flags * Add test with check of both `--help` flag and `help` command that usage print is not empty and both identical. Add godoc clarification * Disable managed update check for version help command test --------- Co-authored-by: Hugo Shaka <hugo.hervieux@goteleport.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
In this PR added hidden initiation of
kingpin.Applicationwhich prevents termination and print usage informationRelated: #54563
Related: https://github.com/gravitational/cloud/issues/13207
Thread: https://gravitational.slack.com/archives/C01TYKHFVTQ/p1753828345916079
changelog: Fixed usage print for global
--helpflag