checksum-command icon indicating copy to clipboard operation
checksum-command copied to clipboard

`--format` argument fails to change output of command

Open holtjohnson opened this issue 6 years ago • 7 comments

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

  1. Run command ‘wp plugin verify-checksums --all’
  2. Run command ‘wp plugin verify-checksums --all --format=json’
  3. Run command ‘wp plugin verify-checksums --all --format=csv’
  4. Run command ‘wp plugin verify-checksums --all --format=count’
  5. Run command ‘wp plugin verify-checksums --all --format=yaml’
  6. Run command ‘wp plugin verify-checksums --all --format=table’
  7. 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.

holtjohnson avatar Jul 30 '18 18:07 holtjohnson

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.

wojsmol avatar Jul 30 '18 19:07 wojsmol

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. image 2018-07-31 at 6 22 04 pm

I agree that this is less than ideal, and we should discuss how to better present the results for this command.

schlessera avatar Jul 31 '18 16:07 schlessera

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.

schlessera avatar Jul 31 '18 16:07 schlessera

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.

swissspidy avatar Jul 31 '18 16:07 swissspidy

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: screen shot 2018-08-01 at 11 31 20

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!

holtjohnson avatar Aug 01 '18 16:08 holtjohnson

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.

swissspidy avatar Aug 23 '18 15:08 swissspidy

I'll remove this from the v2.1.0 checklist again. Let's rediscuss and plan for v2.2.0.

schlessera avatar Dec 12 '18 16:12 schlessera