Skip to content

Commit

Permalink
Merge pull request #1460 from jonhattan/honor-status-url
Browse files Browse the repository at this point in the history
Honor 'project status url' and --source option. Fixes #1321
  • Loading branch information
jonhattan committed Jun 25, 2015
2 parents 480d0df + 187c88a commit b524667
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 15 deletions.
5 changes: 2 additions & 3 deletions commands/pm/download.pm.inc
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ function drush_pm_download() {
}

// Pick cli options.
$source = drush_get_option('source', ReleaseInfo::DEFAULT_URL);
$status_url = drush_get_option('source', ReleaseInfo::DEFAULT_URL);
$restrict_to = drush_get_option('dev', '');
$select = drush_get_option('select', 'auto');
$all = drush_get_option('all', FALSE);
Expand All @@ -105,8 +105,7 @@ function drush_pm_download() {

// Get release history for each request and download the project.
foreach ($requests as $request) {
$request = pm_parse_request($request);
$request['status url'] = $source;
$request = pm_parse_request($request, $status_url, $projects);
$version = isset($projects[$request['name']]) ? $projects[$request['name']]['version'] : NULL;
$release = $release_info->selectReleaseBasedOnStrategy($request, $restrict_to, $select, $all, $version);
if ($release == FALSE) {
Expand Down
29 changes: 25 additions & 4 deletions commands/pm/pm.drush.inc
Original file line number Diff line number Diff line change
Expand Up @@ -1221,14 +1221,16 @@ function drush_pm_releases() {
$filter = '';
}

$status_url = drush_get_option('source');

$rows = array();
$releases_info = array();
foreach ($requests as $request) {
$request = pm_parse_request($request);
$request = pm_parse_request($request, $status_url, $projects);
$project_name = $request['name'];
$project_release_info = $release_info->get($request);
if ($project_release_info) {
$version = isset($projects[$request['name']]) ? $projects[$request['name']]['version'] : NULL;
$version = isset($projects[$project_name]) ? $projects[$project_name]['version'] : NULL;
$releases = $project_release_info->filterReleases($filter, $version);
foreach ($releases as $key => $release) {
$rows[$key] = array(
Expand Down Expand Up @@ -1257,13 +1259,24 @@ function drush_pm_releases() {
function drush_pm_releasenotes() {
$release_info = drush_get_engine('release_info');

// Obtain requests.
if (!$requests = pm_parse_arguments(func_get_args(), FALSE)) {
$requests = array('drupal');
}

// Get installed projects.
if (drush_get_context('DRUSH_BOOTSTRAP_PHASE') >= DRUSH_BOOTSTRAP_DRUPAL_FULL) {
$projects = drush_get_projects();
}
else {
$projects = array();
}

$status_url = drush_get_option('source');

$output = '';
foreach($requests as $request) {
$request = pm_parse_request($request);
$request = pm_parse_request($request, $status_url, $projects);
$project_release_info = $release_info->get($request);
if ($project_release_info) {
$version = empty($request['version']) ? NULL : $request['version'];
Expand Down Expand Up @@ -1599,7 +1612,7 @@ function pm_parse_version($version, $is_core = FALSE) {
* @return array
* Array with all parts of the request info.
*/
function pm_parse_request($request_string) {
function pm_parse_request($request_string, $status_url = NULL, &$projects = array()) {
$request = array();

// Split $request_string in project name and version. Note that hyphens (-)
Expand All @@ -1625,6 +1638,14 @@ function pm_parse_request($request_string) {
'name' => $project,
) + pm_parse_version($version, $is_core);

// Set the status url if provided or available in project's info file.
if ($status_url) {
$request['status url'] = $status_url;
}
elseif (!empty($projects[$project]['status url'])) {
$request['status url'] = $projects[$project]['status url'];
}

return $request;
}

Expand Down
10 changes: 5 additions & 5 deletions commands/pm/updatestatus.pm.inc
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@ function drush_pm_updatestatus() {
// Get specific requests.
$args = pm_parse_arguments(func_get_args(), FALSE);

// Get installed extensions and projects.
$extensions = drush_get_extensions();
$projects = drush_get_projects($extensions);

// Parse out project name and version.
$requests = array();
foreach ($args as $request) {
$request = pm_parse_request($request);
$request = pm_parse_request($request, NULL, $projects);
$requests[$request['name']] = $request;
}

// Get installed extensions and projects.
$extensions = drush_get_extensions();
$projects = drush_get_projects($extensions);

// Get the engine instance.
$update_status = drush_get_engine('update_status');

Expand Down
6 changes: 3 additions & 3 deletions lib/Drush/UpdateService/StatusInfoDrush.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ function lastCheck() {
// Iterate all projects and get the time of the older release info.
$projects = drush_get_projects();
foreach ($projects as $project_name => $project) {
$request = pm_parse_request($project_name);
$request = pm_parse_request($project_name, NULL, $projects);
$url = Project::buildFetchUrl($request);
$cache_file = drush_download_file_name($url);
if (file_exists($cache_file)) {
Expand All @@ -48,7 +48,7 @@ function refresh() {
// Clear all caches for the available projects.
$projects = drush_get_projects();
foreach ($projects as $project_name => $project) {
$request = pm_parse_request($project_name);
$request = pm_parse_request($project_name, NULL, $projects);
$release_info->clearCached($request);
}
}
Expand Down Expand Up @@ -88,7 +88,7 @@ private function getAvailableReleases($projects) {
continue;
}
drush_log(dt('Checking available update data for !project.', array('!project' => $project['label'])), 'ok');
$request = pm_parse_request($project_name);
$request = pm_parse_request($project_name, NULL, $project_name);
$project_release_info = $release_info->get($request);
if ($project_release_info) {
$available[$project_name] = $project_release_info;
Expand Down

0 comments on commit b524667

Please sign in to comment.