-
Notifications
You must be signed in to change notification settings - Fork 32
Revisit cresult #489
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
Merged
Merged
Revisit cresult #489
Conversation
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.
Updated the
CliJsonResulttoCResult.The type is a little less formal about the error value but allows for a
messageandcausenow, leaving the data field open for a payload.Also added
codefield to optionally be the exit code. The exit-points of the code, that print the response, are responsible for settingprocess.exitCodeaccordingly (defaulting to1). This is because some errors are ignored so setting exitCode at point of error is not always desirable.I believe I've covered all the commands. Updated types where necessary. All output points are setting the exit code. etc. Big PR, unfortunately.
CliJsonResultwithCResultthrowstatements in favor of CResultexitCodesetting outside of output filesserializeResultJson(), which will format it with two spaces and a trailing newlineThe output files should now all expect a
CResultand immediately set theexitCodeaccordingly. Then it should print the json or if it's an error, an error message. In some cases the json output is customized and there it will first handle the error case and print the json verbatim. Without json, they should print a nice error message if one happened.There's still some considerations to be had around what to to when
--jsonwith--fileis used; should errors be written to the file or terminal? I'm not sure, actually. Tempted to just remove the--filestuff in favor of having the user pipe output to a file instead. Arguably a DX regression but since the output should at this point be proper json when json is requested, is that a big deal?There's a bit of followup to do for the API error handler function. I think we can tuck that into a CResult instead and simplify that part. But let's do that in a next PR.