You are here

function drush_patchinfo_list in PatchInfo 8.2

Same name and namespace in other branches
  1. 8 patchinfo.drush.inc \drush_patchinfo_list()
  2. 7 patchinfo.drush.inc \drush_patchinfo_list()

Command callback for patchinfo-list command.

Displays patch info for installed projects.

Parameters

string $limit_projects: Comma-separated list of machine-readable project names.

File

./patchinfo.drush.inc, line 49
Drush commands provided by Patch Info module.

Code

function drush_patchinfo_list($limit_projects = '') {
  $table = [];
  $limit_projects = !empty($limit_projects) ? explode(',', $limit_projects) : [];
  $patch_info = _patchinfo_get_info(TRUE);
  if (count($patch_info) > 0) {

    // Get project information from update manager service.
    $projects = \Drupal::service('update.manager')
      ->getProjects();
    $has_limit_projects = count($limit_projects) > 0;
    foreach ($projects as $project) {
      if ($has_limit_projects && !in_array($project['name'], $limit_projects)) {
        continue;
      }
      $patches = _patchinfo_get_patches($patch_info, $project);
      if (count($patches) > 0) {
        $label = $project['info']['name'] . ' (' . $project['name'] . ')';
        if ($project['name'] == 'drupal') {
          $label = 'Drupal (drupal)';
        }
        foreach ($patches as $delta => $patch) {
          $patchinfo_list_row = [
            'name' => $project['name'],
            'label' => $label,
            'delta' => $delta,
            'info' => chunk_split($patch['info']) . $patch['url'],
          ];
          drush_command_invoke_all_ref('patchinfo_list_row_alter', $patchinfo_list_row, $patch);
          $table[$project['name'] . '-' . $delta] = $patchinfo_list_row;
        }
      }
    }
  }
  return $table;
}