checksum-command
checksum-command copied to clipboard
`--format` argument fails to change output of command
Summary
While trying to use the --format
argument with the wp plugin verify-checksums
commands I found the output wouldn't change. I've tried all format options listed and none of them change the format outputted.
Steps to reproduce
- Run command ‘wp plugin verify-checksums --all’
- Run command ‘wp plugin verify-checksums --all --format=json’
- Run command ‘wp plugin verify-checksums --all --format=csv’
- Run command ‘wp plugin verify-checksums --all --format=count’
- Run command ‘wp plugin verify-checksums --all --format=yaml’
- Run command ‘wp plugin verify-checksums --all --format=table’
- Observe the output of all six commands is identical.
Environment
- WP-CLI 1.5.1
Results and impacts
Severity – Moderate
Expected Results: Output in the format specified in the command line argument
Actual Results: The output does not follow the format specified.
This command has been incredibly useful to me in one off scenarios, but I can't use it effectively in scripts and Unix pipes without the option of a clean output format.
Hi @holtjohnson Try to cause checksum error in one of the plugins, if I read code correctly the formatter is run only in error conditions.
I do get different output, but only for the issues that were actually detected. The status messages are added as normal STDOUT/STDERR labeled text.
I agree that this is less than ideal, and we should discuss how to better present the results for this command.
Right now, it is not easily possible to capture just the JSON/CSV output reliably.
This is one of the basic requirements for making the command scriptable.
Related: https://github.com/wp-cli/i18n-command/issues/39
I want to make that command scriptable as well and haven't found an ideal solution yet.
However, looking at this issue here I realize that this is a more common problem so it would be great to have a universal solution.
One thought was to just use a different logger that also catches STDOUT/STDERR output.
WP_CLI::error()
could still halt the script, everything else would go into a log that's presented at the end.
Thanks @wojsmol for pointing out the formatter only runs in error conditions. I can now get different output of the checksum errors, but the general warnings, errors, and details such as which plugins passed are not formatted.
@schlessera I would agree it's less than ideal and prevents capturing the output reliably. I'd add to @schlessera's screenshot showing how the warnings are added as STDOUT text. I was trying to get the JSON output from the command, but this is the response I'm greeted with:
I was expecting the output of the command would include clean JSON with details about which plugins were skipped, failed, or passed and a list of the failure details.
As always, thanks to all of you who work on this project. I love WP-CLI!
Wouldn't using --quiet
work for now in this case, when one isn't interested in the warnings or errors, but only the command's actual output?
The thing is, for the i18n-command it wouldn't work. The warnings I use there contain relatively useful information. But I guess I should just use WP_CLI::log()
instead.
I'll remove this from the v2.1.0 checklist again. Let's rediscuss and plan for v2.2.0.