function update($args, $assoc_args)
{
global $wp_version;
$update = $from_api = null;
$upgrader = 'WP_CLI\\CoreUpgrader';
if (!empty($args[0])) {
$upgrader = 'WP_CLI\\NonDestructiveCoreUpgrader';
$version = \WP_CLI\Utils\get_flag_value($assoc_args, 'version');
$update = (object) array('response' => 'upgrade', 'current' => $version, 'download' => $args[0], 'packages' => (object) array('partial' => null, 'new_bundled' => null, 'no_content' => null, 'full' => $args[0]), 'version' => $version, 'locale' => null);
} else {
if (empty($assoc_args['version'])) {
wp_version_check();
$from_api = get_site_transient('update_core');
if (\WP_CLI\Utils\get_flag_value($assoc_args, 'minor')) {
foreach ($from_api->updates as $offer) {
$sem_ver = Utils\get_named_sem_ver($offer->version, $wp_version);
if (!$sem_ver || 'patch' !== $sem_ver) {
continue;
}
$update = $offer;
break;
}
if (empty($update)) {
WP_CLI::success('WordPress is at the latest minor release.');
return;
}
} else {
if (!empty($from_api->updates)) {
list($update) = $from_api->updates;
}
}
} else {
if (\WP_CLI\Utils\wp_version_compare($assoc_args['version'], '<') || \WP_CLI\Utils\get_flag_value($assoc_args, 'force')) {
$version = $assoc_args['version'];
$locale = \WP_CLI\Utils\get_flag_value($assoc_args, 'locale', get_locale());
$new_package = $this->get_download_url($version, $locale);
$update = (object) array('response' => 'upgrade', 'current' => $assoc_args['version'], 'download' => $new_package, 'packages' => (object) array('partial' => null, 'new_bundled' => null, 'no_content' => null, 'full' => $new_package), 'version' => $version, 'locale' => $locale);
}
}
}
if (!empty($update) && ($update->version != $wp_version || \WP_CLI\Utils\get_flag_value($assoc_args, 'force'))) {
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
if ($update->version) {
WP_CLI::log("Updating to version {$update->version} ({$update->locale})...");
} else {
WP_CLI::log("Starting update...");
}
$from_version = $wp_version;
$GLOBALS['wp_cli_update_obj'] = $update;
$result = Utils\get_upgrader($upgrader)->upgrade($update);
unset($GLOBALS['wp_cli_update_obj']);
if (is_wp_error($result)) {
$msg = WP_CLI::error_to_string($result);
if ('up_to_date' != $result->get_error_code()) {
WP_CLI::error($msg);
} else {
WP_CLI::success($msg);
}
} else {
if (file_exists(ABSPATH . 'wp-includes/version.php')) {
include ABSPATH . 'wp-includes/version.php';
$to_version = $wp_version;
}
$locale = \WP_CLI\Utils\get_flag_value($assoc_args, 'locale', get_locale());
$this->cleanup_extra_files($from_version, $to_version, $locale);
WP_CLI::success('WordPress updated successfully.');
}
} else {
WP_CLI::success('WordPress is up to date.');
}
}