CLI_Command::get_updates PHP Метод

get_updates() приватный Метод

Returns update information.
private get_updates ( $assoc_args )
    private function get_updates($assoc_args)
    {
        $url = 'https://api.github.com/repos/wp-cli/wp-cli/releases';
        $options = array('timeout' => 30);
        $headers = array('Accept' => 'application/json');
        $response = Utils\http_request('GET', $url, $headers, $options);
        if (!$response->success || 200 !== $response->status_code) {
            WP_CLI::error(sprintf("Failed to get latest version (HTTP code %d).", $response->status_code));
        }
        $release_data = json_decode($response->body);
        $updates = array('major' => false, 'minor' => false, 'patch' => false);
        foreach ($release_data as $release) {
            // Get rid of leading "v" if there is one set.
            $release_version = $release->tag_name;
            if ('v' === substr($release_version, 0, 1)) {
                $release_version = ltrim($release_version, 'v');
            }
            $update_type = Utils\get_named_sem_ver($release_version, WP_CLI_VERSION);
            if (!$update_type) {
                continue;
            }
            if (!empty($updates[$update_type]) && !Comparator::greaterThan($release_version, $updates[$update_type]['version'])) {
                continue;
            }
            $updates[$update_type] = array('version' => $release_version, 'update_type' => $update_type, 'package_url' => $release->assets[0]->browser_download_url);
        }
        foreach ($updates as $type => $value) {
            if (empty($value)) {
                unset($updates[$type]);
            }
        }
        foreach (array('major', 'minor', 'patch') as $type) {
            if (true === \WP_CLI\Utils\get_flag_value($assoc_args, $type)) {
                return !empty($updates[$type]) ? array($updates[$type]) : false;
            }
        }
        if (empty($updates) && preg_match('#-alpha-(.+)$#', WP_CLI_VERSION, $matches)) {
            $version_url = 'https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/NIGHTLY_VERSION';
            $response = Utils\http_request('GET', $version_url);
            if (!$response->success || 200 !== $response->status_code) {
                WP_CLI::error(sprintf("Failed to get current nightly version (HTTP code %d)", $response->status_code));
            }
            $nightly_version = trim($response->body);
            if (WP_CLI_VERSION != $nightly_version) {
                $updates['nightly'] = array('version' => $nightly_version, 'update_type' => 'nightly', 'package_url' => 'https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli-nightly.phar');
            }
        }
        return array_values($updates);
    }