feat: Use structs for errors returned by pflag. #425
Merged
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 pull request is the pflag complement to spf13/cobra#2266, converting a bunch of
fmt.Errorf
errors into structs implementing theerror
interface.The goal of this pull request is to make it easier for callers of the
Parse
function to determine why flag parsing failed without having to resort to regex matching or parsing the returned error message. This pull request goes a bit further than using the%w
error-wrapping format verb, opting to use structs as a way to both determine the type of returned error and get specific details about it (e.g. the relevant*pflag.Flag
).Giving callers this info enables them to do new things such as:
The error structs added are:
NotExistError
ValueRequiredError
InvalidValueError
InvalidSyntaxError
Tests have been added as well, and I made sure to maintain compatibility with versions of pflag prior to this pull request by using the exact same error messages.