-
Notifications
You must be signed in to change notification settings - Fork 124
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
Rewrite parser to support custom run signatures #508
Merged
Merged
Conversation
This file contains 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
@ajalt has this been released yet? if not, could a release be run? |
Not yet, but you can use a snapshot build in the meantime. |
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.
This PR completely rewrites all parsing, running, and finalization code to separate those three phases.
Previously, all three were interleaved in a single pass. Clikt has evolved a lot of features over the years, and many of them interact with each other. Especially
allowMultipleSubcommands
, conversions likedefaultLazy
referencing other parameters, eager options, andMultiUsageError
contribute to making the execution logic more complicated.But that's all disentangled now, and the phases are made public in the new
CommandLineProcessor
static functions, so you can do this:Now we can implement the new command types discussed in #503. All the functionality of
CliktCommand
is moved to a newBaseCliktCommand
that has a self type variable to enforce that subcommands are the same type. This PR includes three implementations:Those are the full implementations; not abridged. Implementing your own base type is simple enough that I don't expect to build any more in.
Fixes #342
Fixes #378
Fixes #434
Fixes #449
Fixes #489
Fixes #503