Skip to content
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

--format argument fails to change output of command #47

Open
holtjohnson opened this issue Jul 30, 2018 · 7 comments
Open

--format argument fails to change output of command #47

holtjohnson opened this issue Jul 30, 2018 · 7 comments

Comments

@holtjohnson
Copy link

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 holtjohnson changed the title --format command fails to change output of command --format argument fails to change output of command Jul 30, 2018
@wojsmol
Copy link
Contributor

wojsmol commented Jul 30, 2018

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.

@schlessera
Copy link
Member

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
Copy link
Member

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.

@swissspidy
Copy link
Member

Related: wp-cli/i18n-command#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.

@holtjohnson
Copy link
Author

holtjohnson commented Aug 1, 2018

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!

@swissspidy
Copy link
Member

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.

@schlessera schlessera changed the title --format argument fails to change output of command --format argument fails to change output of command Oct 2, 2018
@schlessera
Copy link
Member

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants