-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: stop automatic sorting for --help #1430
Conversation
45c0272
to
e27277f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@FGYFFFF Thank you! Are you able to add some tests around this, too? If not, I'm happy to pick up the work.
|
Did you mean you will be adding tests as part of this PR? |
Yes! Do I add a test to this pr or mention another pr? |
@FGYFFFF Adding a test to this PR, please 👍🏼 😁 |
If your flag does not define "category", then the displayed flags will be in the order you define them. If your flag defines "category" then the flags will be grouped and sorted according to "category". |
I've tried to reproduce the original issue using the following steps: go.mod points to this commit: replace github.com/urfave/cli/v2 => github.com/FGYFFFF/cli/v2 v2.10.4-0.20220702104559-e27277fa75de Flags are defined in the following order: Here's what I see on
Here's what I see when I comment line 179 in
Works the same with either category defined or blank. |
I don't think we're talking about a problem. If you declare a flag that defines a "category", then the flags under that "category" grouping need to be sorted. For example:
When "moduleFlag" declares "category", all flags will be sorted for below
But if you don't specify "category", then all flags should not be sorted:
The flags will be displayed in the defined order:
|
That is correct. I have defined my flags in the following order: Besides that, I am not so sure that it's a good idea to sort flags within a category. I'd like to control that order somehow in my app. Having a flag which controls this behaviour would be great.
In my understanding, this example is not exactly correct: flags are defined in the following order: |
Yes, I agree with you: "category" should not be sorted automatically. But you can look at the implementation of category. The implementation of category uses "map", which results in a different order each time the map is traversed, so category is sorted once by default |
@meatballhat Hey, friend!!! I've thought about this piece of code and I don't think I need to write unit tests, can I merge it in? My code currently relies on this feature. |
@FGYFFFF Without unit tests we cannot approve this PR since this is a behavioral change. If this is expected behaviour this needs to be in a unit test so that we can confirm that some other change doesnt break this down the road. |
Interested in this as well |
e27277f
to
02613e5
Compare
@FGYFFFF @meatballhat I fixed the code to ignore empty category and also fixed the tests for this. |
@meatballhat Can you take a look at test-docs ? |
@FGYFFFF @dearchap From what I can tell, the failure in the diff --git a/docs/v2/examples/flags.md b/docs/v2/examples/flags.md
index dbb41ea..44c643a 100644
--- a/docs/v2/examples/flags.md
+++ b/docs/v2/examples/flags.md
@@ -239,7 +239,7 @@ For example this:
<!-- {
"args": ["--help"],
- "output": ".*Load configuration from FILE\n.*\n.*Language for the greeting.*"
+ "output": ".*Load configuration from FILE\n.*Language for the greeting.*"
} -->
```go
package main |
@meatballhat Update the flags.md. All tests passed. |
[](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/g-rath/osv-detector](https://togithub.com/g-rath/osv-detector) | require | minor | `v0.7.2` -> `v0.8.0` | | [github.com/urfave/cli/v2](https://togithub.com/urfave/cli) | require | minor | `v2.17.1` -> `v2.19.2` | | [golang.org/x/crypto](https://togithub.com/golang/crypto) | require | digest | `4161e89` -> `56aed06` | | [golang.org/x/exp](https://togithub.com/golang/exp) | require | digest | `b9f4876` -> `4de253d` | --- ### Release Notes <details> <summary>g-rath/osv-detector</summary> ### [`v0.8.0`](https://togithub.com/G-Rath/osv-detector/releases/tag/v0.8.0) [Compare Source](https://togithub.com/g-rath/osv-detector/compare/v0.7.2...v0.8.0) #### What's Changed - support parsing `poetry.lock`, for Python ([https://github.com/G-Rath/osv-detector/pull/156](https://togithub.com/G-Rath/osv-detector/pull/156)) - support parsing `pubspec.lock`, for Dart ([https://github.com/G-Rath/osv-detector/pull/159](https://togithub.com/G-Rath/osv-detector/pull/159)) **Full Changelog**: G-Rath/osv-detector@v0.7.2...v0.8.0 </details> <details> <summary>urfave/cli</summary> ### [`v2.19.2`](https://togithub.com/urfave/cli/releases/tag/v2.19.2) [Compare Source](https://togithub.com/urfave/cli/compare/v2.19.1...v2.19.2) #### What's Changed - fix: stop automatic sorting for --help by [@​FGYFFFF](https://togithub.com/FGYFFFF) in [https://github.com/urfave/cli/pull/1430](https://togithub.com/urfave/cli/pull/1430) #### New Contributors - [@​FGYFFFF](https://togithub.com/FGYFFFF) made their first contribution in [https://github.com/urfave/cli/pull/1430](https://togithub.com/urfave/cli/pull/1430) **Full Changelog**: urfave/cli@v2.19.1...v2.19.2 ### [`v2.19.1`](https://togithub.com/urfave/cli/releases/tag/v2.19.1) [Compare Source](https://togithub.com/urfave/cli/compare/v2.19.0...v2.19.1) #### What's Changed - Fix:(issue\_1500). Fix slice flag value duplication issue by [@​dearchap](https://togithub.com/dearchap) in [https://github.com/urfave/cli/pull/1502](https://togithub.com/urfave/cli/pull/1502) **Full Changelog**: urfave/cli@v2.19.0...v2.19.1 ### [`v2.19.0`](https://togithub.com/urfave/cli/releases/tag/v2.19.0) [Compare Source](https://togithub.com/urfave/cli/compare/v2.18.2...v2.19.0) #### What's Changed - Fix:(issue\_1505) Fix flag alignment in help by [@​dearchap](https://togithub.com/dearchap) in [https://github.com/urfave/cli/pull/1506](https://togithub.com/urfave/cli/pull/1506) **Full Changelog**: urfave/cli@v2.18.2...v2.19.0 ### [`v2.18.2`](https://togithub.com/urfave/cli/releases/tag/v2.18.2) [Compare Source](https://togithub.com/urfave/cli/compare/v2.18.1...v2.18.2) #### What's Changed - Configure GenericFlag's Destination type as struct not pointer by [@​nkuba](https://togithub.com/nkuba) in [https://github.com/urfave/cli/pull/1442](https://togithub.com/urfave/cli/pull/1442) #### New Contributors - [@​nkuba](https://togithub.com/nkuba) made their first contribution in [https://github.com/urfave/cli/pull/1442](https://togithub.com/urfave/cli/pull/1442) **Full Changelog**: urfave/cli@v2.18.1...v2.18.2 ### [`v2.18.1`](https://togithub.com/urfave/cli/releases/tag/v2.18.1) [Compare Source](https://togithub.com/urfave/cli/compare/v2.18.0...v2.18.1) #### What's Changed - Ensure "generate" step runs in CI prior to diff check by [@​meatballhat](https://togithub.com/meatballhat) in [https://github.com/urfave/cli/pull/1504](https://togithub.com/urfave/cli/pull/1504) **Full Changelog**: urfave/cli@v2.18.0...v2.18.1 ### [`v2.18.0`](https://togithub.com/urfave/cli/releases/tag/v2.18.0) [Compare Source](https://togithub.com/urfave/cli/compare/v2.17.2...v2.18.0) #### What's Changed - Call FlagStringer in String() method of slice flags by [@​fjl](https://togithub.com/fjl) in [https://github.com/urfave/cli/pull/1508](https://togithub.com/urfave/cli/pull/1508) #### New Contributors - [@​fjl](https://togithub.com/fjl) made their first contribution in [https://github.com/urfave/cli/pull/1508](https://togithub.com/urfave/cli/pull/1508) **Full Changelog**: urfave/cli@v2.17.2...v2.18.0 ### [`v2.17.2`](https://togithub.com/urfave/cli/releases/tag/v2.17.2) [Compare Source](https://togithub.com/urfave/cli/compare/v2.17.1...v2.17.2) #### What's Changed - Remove nonexistent phony targets by [@​meatballhat](https://togithub.com/meatballhat) in [https://github.com/urfave/cli/pull/1503](https://togithub.com/urfave/cli/pull/1503) - wrap: Avoid trailing whitespace for empty lines by [@​abitrolly](https://togithub.com/abitrolly) in [https://github.com/urfave/cli/pull/1513](https://togithub.com/urfave/cli/pull/1513) #### New Contributors - [@​abitrolly](https://togithub.com/abitrolly) made their first contribution in [https://github.com/urfave/cli/pull/1513](https://togithub.com/urfave/cli/pull/1513) **Full Changelog**: urfave/cli@v2.17.1...v2.17.2 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, 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. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/google/osv.dev). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4yMjIuMyIsInVwZGF0ZWRJblZlciI6IjMyLjIzNC4yIn0=--> Co-authored-by: Rex P <106129829+another-rex@users.noreply.github.com>
What type of PR is this?
What this PR does / why we need it:
Wrongly added catecory "" to each flag automatically, causing --help to sort automatically
Which issue(s) this PR fixes:
Fixes #1420
Special notes for your reviewer:
Testing
Release Notes