Skip to content

Rethink the WP-CLI approach #153

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

Open
1 task done
schlessera opened this issue Apr 25, 2023 · 0 comments
Open
1 task done

Rethink the WP-CLI approach #153

schlessera opened this issue Apr 25, 2023 · 0 comments
Labels
Needs Discussion Anything that needs a discussion/agreement [Type] Enhancement A suggestion for improvement of an existing feature WP-CLI Issues related to WP-CLI

Comments

@schlessera
Copy link
Member

Is your enhancement related to a problem? Please describe.

Hi performance team!

@spacedmonkey pinged me to see if I have any input on improving the WP-CLI integration.

The current approach to integrating with WP-CLI is both cumbersome and can lead to side effects due to the use of object-cache.php as a "hook".

I would suggest a different approach that is safer to use and will ultimately provide a better user experience.

  1. Create a WP-CLI package that provides a plugin check command. This package is a separate repository and can be installed via something like wp package install 10up/plugin-check-cli. As a WP-CLI package, it is already loaded and active before WordPress is loaded, so there is no need for any special handling to get in early. The command can check for the existence of the plugin and make use of its files as required, or come with its own code where it makes sense. This allows for different handling in CLI than for the regular plugin, but also allows for code reuse where applicable (just ensure you can rely on a fixed set of interfaces!). It also gives full control over the WordPress environment and you can already hook into the WordPress lifecycle using WP_CLI::add_wp_hook().
  2. From within the plugin, conditionally add a WP-CLI plugin check only if that command is not yet registered (to avoid overriding the already installed WP-CLI package). This plugin check command does not actually run any checks, though, it only produces a helpful message about the missing WP-CLI package and how the user can install it. It will show something like this:
$ wp plugin check akismet
Error: The necessary WP-CLI package for running performance checks has not yet been installed.
Please install it using the following command and then run your request again:
  wp package install 10up/plugin-check-cli
  1. Add version numbers and update checks into both the WP-CLI package and the plugin to ensure that you can detect unmet requirements and prompt users to run updates when required.

The above should be a safer way to achieve a WP-CLI integration with a plugin that goes beyond the boundaries of what a plugin is supposed to do.

That being said, I'd like to note, that I'd generally not recommend have this type of checkers in a plugin, but would rather recommend building it CLI-first and then maybe wrap a plugin UI around it, not the other way around as it is happening here.

Designs

No response

Describe alternatives you've considered

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Needs Discussion Anything that needs a discussion/agreement [Type] Enhancement A suggestion for improvement of an existing feature WP-CLI Issues related to WP-CLI
Projects
None yet
Development

No branches or pull requests

3 participants