-
Notifications
You must be signed in to change notification settings - Fork 81
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
Refactor CLI argument parsing #467
Conversation
Hi @grodin! Thank you for your pull request and welcome to our community. Action RequiredIn order to merge any pull request (code, docs, etc.), we require contributors to sign our Contributor License Agreement, and we don't seem to have one on file for you. ProcessIn order for us to review and merge your suggested changes, please sign at https://code.facebook.com/cla. If you are contributing on behalf of someone else (eg your employer), the individual CLA may not be sufficient and your employer may need to sign the corporate CLA. Once the CLA is signed, our tooling will perform checks and validations. Afterwards, the pull request will be tagged with If you have received this in error or have any questions, please contact us at [email protected]. Thanks! |
Forgot to sign the CLA before opening this, done now |
Thank you for signing our Contributor License Agreement. We can now accept your code for this (and any) Meta Open Source project. Thanks! |
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.
I overall loved the direction things are going, keep it up! 👍
Just a few minor comments, but nothing serious. Let me know if you want to push this already and proceed with another PR or just build on top of this one.
Intended to make testing of combination of CLI parameters easier
Probably worth separating them out into separate PRs. I've got some more nearly ready once this is merged. Some of this is formatted with ktfmt, some isn't, but you said you'd handle that when you merge it internally, so I'll leave that to you. |
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.
@@ -173,4 +178,11 @@ class Main( | |||
throw e | |||
} | |||
} | |||
|
|||
fun exitFatal(message: String, returnCode: Int): Nothing { |
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.
Any reason this is not private?
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.
Nope! Glad you caught that actually, it's part of some refactoring I haven't finished
In case you are not going to work on it this week, let's start merging this already, you could make other changes in other PRs. |
@hick209 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
Sorry, had a very busy period at home and on top of that, drive failure in my laptop, so I've not been able to work on this much. I am still very much intending to get more done on ktfmt, hopefully end of this week, definitely more next. |
No problem @grodin, I completely understand. Thanks a ton for your contributions, we're really grateful for that. |
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.facebook:ktfmt](https://togithub.com/facebook/ktfmt) | dependencies | minor | `0.49` -> `0.50` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>facebook/ktfmt (com.facebook:ktfmt)</summary> ### [`v0.50`](https://togithub.com/facebook/ktfmt/releases/tag/v0.50): 0.50 #### Changelog - Add pre commit hooks to readme ([https://github.com/facebook/ktfmt/pull/462](https://togithub.com/facebook/ktfmt/pull/462)) – [@​0x26res](https://togithub.com/0x26res) - Add homebrew installation note to readme ([https://github.com/facebook/ktfmt/pull/468](https://togithub.com/facebook/ktfmt/pull/468)) – [@​chenrui333](https://togithub.com/chenrui333) - Refactor CLI argument parsing ([https://github.com/facebook/ktfmt/pull/467](https://togithub.com/facebook/ktfmt/pull/467)) – [@​grodin](https://togithub.com/grodin) - Fix issue with context receive in lambdas ([https://github.com/facebook/ktfmt/issues/471](https://togithub.com/facebook/ktfmt/issues/471)) – [@​hick209](https://togithub.com/hick209) - Don't reorder [@​sample](https://togithub.com/sample) tag ([https://github.com/facebook/ktfmt/issues/406](https://togithub.com/facebook/ktfmt/issues/406)) – [@​davidtorosyan](https://togithub.com/davidtorosyan) **Full Changelog**: facebook/ktfmt@v0.49...v0.50 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTYuMSIsInVwZGF0ZWRJblZlciI6IjM3LjM5Ni4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.facebook:ktfmt](https://togithub.com/facebookincubator/ktfmt) | dependencies | minor | `0.49` -> `0.50` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>facebookincubator/ktfmt (com.facebook:ktfmt)</summary> ### [`v0.50`](https://togithub.com/facebook/ktfmt/releases/tag/v0.50): 0.50 #### Changelog - Add pre commit hooks to readme ([https://github.com/facebook/ktfmt/pull/462](https://togithub.com/facebook/ktfmt/pull/462)) – [@​0x26res](https://togithub.com/0x26res) - Add homebrew installation note to readme ([https://github.com/facebook/ktfmt/pull/468](https://togithub.com/facebook/ktfmt/pull/468)) – [@​chenrui333](https://togithub.com/chenrui333) - Refactor CLI argument parsing ([https://github.com/facebook/ktfmt/pull/467](https://togithub.com/facebook/ktfmt/pull/467)) – [@​grodin](https://togithub.com/grodin) - Fix issue with context receive in lambdas ([https://github.com/facebook/ktfmt/issues/471](https://togithub.com/facebook/ktfmt/issues/471)) – [@​hick209](https://togithub.com/hick209) - Don't reorder [@​sample](https://togithub.com/sample) tag ([https://github.com/facebook/ktfmt/issues/406](https://togithub.com/facebook/ktfmt/issues/406)) – [@​davidtorosyan](https://togithub.com/davidtorosyan) **Full Changelog**: facebook/ktfmt@v0.49...v0.50 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTYuMSIsInVwZGF0ZWRJblZlciI6IjM3LjM5Ni4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [com.facebook:ktfmt](https://togithub.com/facebook/ktfmt) | `0.49` -> `0.51` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.facebook:ktfmt/0.51?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.facebook:ktfmt/0.51?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.facebook:ktfmt/0.49/0.51?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.facebook:ktfmt/0.49/0.51?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>facebook/ktfmt (com.facebook:ktfmt)</summary> ### [`v0.51`](https://togithub.com/facebook/ktfmt/blob/HEAD/CHANGELOG.md#051) ##### Added - Created CHANGELOG.md - Added --help option to CLI ([https://github.com/facebook/ktfmt/pull/477](https://togithub.com/facebook/ktfmt/pull/477)) ##### Changed - Preserves blank spaces between when clauses ([https://github.com/facebook/ktfmt/issues/342](https://togithub.com/facebook/ktfmt/issues/342)) - Named the default style as `Formatter.META_FORMAT` / `--meta-style` - `FormattingOptions` constructor parameters order was changed ##### Fixed - Compilation issues with online formatter (facebook/ktfmt@8605080) - Removing valid semicolons ([https://github.com/facebook/ktfmt/issues/459](https://togithub.com/facebook/ktfmt/issues/459)) - Incorrect detection of unused `assign` import ([https://github.com/facebook/ktfmt/issues/411](https://togithub.com/facebook/ktfmt/issues/411)) ##### Removed - **Deleted `Formatter.DROPBOX_FORMAT` / `--dropbox-style` (BREAKING CHANGE)** - Deleted `FormattingOptions.Style` enum ### [`v0.50`](https://togithub.com/facebook/ktfmt/releases/tag/v0.50): 0.50 #### Changelog - Add pre commit hooks to readme ([https://github.com/facebook/ktfmt/pull/462](https://togithub.com/facebook/ktfmt/pull/462)) – [@​0x26res](https://togithub.com/0x26res) - Add homebrew installation note to readme ([https://github.com/facebook/ktfmt/pull/468](https://togithub.com/facebook/ktfmt/pull/468)) – [@​chenrui333](https://togithub.com/chenrui333) - Refactor CLI argument parsing ([https://github.com/facebook/ktfmt/pull/467](https://togithub.com/facebook/ktfmt/pull/467)) – [@​grodin](https://togithub.com/grodin) - Fix issue with context receive in lambdas ([https://github.com/facebook/ktfmt/issues/471](https://togithub.com/facebook/ktfmt/issues/471)) – [@​hick209](https://togithub.com/hick209) - Don't reorder [@​sample](https://togithub.com/sample) tag ([https://github.com/facebook/ktfmt/issues/406](https://togithub.com/facebook/ktfmt/issues/406)) – [@​davidtorosyan](https://togithub.com/davidtorosyan) **Full Changelog**: facebook/ktfmt@v0.49...v0.50 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), 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. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/ZacSweers/CatchUp). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjM5My4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Working towards #391.
I wanted to open this to get feedback on the approach.
I could have chosen to use exceptions, but I find sealed classes much more composable and I already anticipate adding another class to the
ParseResult
hierarchy to represent a situation where a message needs to be shown to the user but isn't an error (--help
is the obvious example).Closes #465 more or less as a side-effect.