protected function install_from_repo($slug, $assoc_args)
{
$api = themes_api('theme_information', array('slug' => $slug));
if (is_wp_error($api)) {
return $api;
}
if (isset($assoc_args['version'])) {
self::alter_api_response($api, $assoc_args['version']);
}
if (!isset($assoc_args['force']) && wp_get_theme($slug)->exists()) {
// We know this will fail, so avoid a needless download of the package.
return new WP_Error('already_installed', 'Theme already installed.');
}
WP_CLI::log(sprintf('Installing %s (%s)', $api->name, $api->version));
if (!isset($assoc_args['version']) || 'dev' !== $assoc_args['version']) {
WP_CLI::get_http_cache_manager()->whitelist_package($api->download_link, $this->item_type, $api->slug, $api->version);
}
$result = $this->get_upgrader($assoc_args)->install($api->download_link);
return $result;
}