wp-cli / core-command

Downloads, installs, updates, and manages a WordPress installation.
MIT License
49 stars 50 forks source link

Introduce --version=beta argument for updating to latest WordPress beta #17

Open johnbillion opened 7 years ago

johnbillion commented 7 years ago

Running wp core update --version=nightly now updates to 4.9 alpha, since core branched 4.8 a few days ago and trunk is now 4.9 alpha.

If the WordPress Beta Tester plugin is used and is set to Bleeding edge nightlies it sticks to 4.8-RC2-40868. It appears to do this by appending a _beta_tester=true flag on the update request (source).

It would be great if WP-CLI supported a version flag such as wp core update --version=beta which stuck to the current beta/RC in the same way that the beta tester plugins appears to.

Might be worth pinging Westi or Dion for clarification.

danielbachhuber commented 7 years ago

It would be great if WP-CLI supported a version flag such as wp core update --version=beta which stuck to the current beta/RC in the same way that the beta tester plugins appears to.

👍

ocean90 commented 7 years ago

It appears to do this by appending a _beta_tester=true flag on the update request

It's actually the -wp-beta-tester suffix for $wp_version, see mangle_wp_version().

Snippet from the API code:

    if ( 0 === strpos( $version, $stable_branch ) ) {
        $ver = "$stable_branch-latest";
    } elseif ( 0 === strpos( $version, $dev_branch ) ) {
        $ver = "$dev_branch-latest";
    } elseif ( 'trunk' !== $dev_branch && false !== strpos( $version, '-wp-beta-tester' ) && 0 === strpos( $version, (string) ( (float) $dev_branch + 0.1 ) ) ) {
        // Handle WordPress Beta Tester requests for bleeding-edge during release transitions. Don't provide a package for trunk if current development happens on a branch.
        $ver = "$dev_branch-latest";
    } else {
        $ver = 'latest';
    }
danielbachhuber commented 7 years ago

@johnbillion How should we handle release candidates? If you use --version=beta, would you expect to get a release candidate?

danielbachhuber commented 7 years ago

Agh, I cannot, for the life of me, figure out the proper URL to get a beta download offer. Any tips?

https://api.wordpress.org/core/version-check/1.7/?version=4.8.3-wp-beta-tester&php=7.0.22&locale=en_US&mysql=5.5.5&local_package=&blogs=1&users=1&multisite_enabled=0&initial_db_version=38590

This request only appears to include the nightly that we already have.

ocean90 commented 7 years ago

@danielbachhuber The API doesn't return beta/rc packages, only the nightlies.

danielbachhuber commented 7 years ago

The API doesn't return beta/rc packages, only the nightlies.

@ocean90 Oh. Is there any way to pragmatically fetch beta/rc packages (other than scraping HTML)?

johnbillion commented 7 years ago

If you use --version=beta, would you expect to get a release candidate?

Yeah I think beta in this context should include anything from beta onwards up until release.

AFAIK that's how the Beta Tester plugin works, but I haven't checked it in a while.

danielbachhuber commented 7 years ago

Opened a meta ticket: https://meta.trac.wordpress.org/ticket/3245

danielbachhuber commented 6 years ago

Closing as maybelater if this is ever added to the WP.org API

josenobile commented 3 years ago

Since 2020-09-07 is ready: https://meta.trac.wordpress.org/ticket/5412#comment:12

WordPress 5.6 is expected to be released on 2020-12-08, the current RC version is 5.6-RC1-49694, but wp core download --version=5.6-RC1-49694 did not work, just wp core download --version=5.6-RC1 which is a previous version.

It is possible to implement --version=rc, --version=beta, as the API already supports?

danielbachhuber commented 1 year ago

Open to pull requests if anyone would like to open one!

johnbillion commented 6 months ago

It looks like the w.org API implementation in https://meta.trac.wordpress.org/ticket/5412 doesn't quite do what I was expecting. For example I expected to be able to request a beta or an RC and be served one even if the release has since gone stable. Without this, it's only possible to request a beta or RC during the beta or RC window.

Example: I'm on 6.4 and I want to update to 6.5 RC even though 6.5 is already out the door and had some patch releases. The w.org API isn't responding with an RC package, it's only responding with 6.5.2 stable: https://api.wordpress.org/core/version-check/1.7/?version=6.4.0&channel=rc . The pretend_releases URL query parameter can be added, but then that makes the API request redundant because if we know which RC or beta version we want then we could just request the URL directly.

johnbillion commented 6 months ago

Opened https://meta.trac.wordpress.org/ticket/7613