Skip to content

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

Open

Description

@holtjohnson

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.

Activity

  1. changed the title [-]`--format` command fails to change output of command[/-] [+]--format argument fails to change output of command[/+] on Jul 30, 2018
  2. wojsmol commented on Jul 30, 2018

    @wojsmol
    Contributor

    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.

  3. schlessera commented on Jul 31, 2018

    @schlessera
    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.

  4. schlessera commented on Jul 31, 2018

    @schlessera
    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.

  5. swissspidy commented on Jul 31, 2018

    @swissspidy
    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.

  6. holtjohnson commented on Aug 1, 2018

    @holtjohnson
    Author

    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!

  7. swissspidy commented on Aug 23, 2018

    @swissspidy
    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.

  8. changed the title [-]--format argument fails to change output of command[/-] [+]`--format` argument fails to change output of command[/+] on Oct 2, 2018
  9. schlessera commented on Dec 12, 2018

    @schlessera
    Member

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

  10. ma-04 commented on Nov 13, 2025

    @ma-04
  11. swissspidy commented on Nov 13, 2025

    @swissspidy
    Member

    I don't think so. #140 was for core checksums, whereas this issue here is about plugin checksums.

  12. alaminfirdows commented on Jun 27, 2026

    @alaminfirdows
    Contributor

    This appears to be resolved on the current main branch. I tested wp plugin verify-checksums against a plugin with a modified file, and each documented output format now produces the expected distinct output:

    --format=table
    
    plugin_name   file    message
    ai            ai.php  Checksum does not match
    
    --format=json
    
    [{"plugin_name":"ai","file":"ai.php","message":"Checksum does not match"}]
    
    --format=csv
    
    plugin_name,file,message
    ai,ai.php,"Checksum does not match"
    
    --format=count
    
    1
    
    --format=yaml
    
    ---
    -
      plugin_name: ai
      file: ai.php
      message: Checksum does not match
    

    The --format flag now uses the standard WP_CLI\Formatter in Checksum_Plugin_Command.php, so JSON, CSV, count, and YAML outputs all work correctly for scripts and pipelines.

    Tested with WP-CLI 2.13.0-alpha.

    I think this issue can be closed. It would still be good to confirm that the core verify-checksums command behaves the same way.

  13. szepeviktor commented on Aug 17, 2026

    @szepeviktor
    Contributor

    How has the tokens to fix this ancient one? 🤖

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions