From 7be3eb2b6407d2bf8228b9f54a3e40b66b598169 Mon Sep 17 00:00:00 2001
From: Greg Anderson <greg.1.anderson@greenknowe.org>
Date: Thu, 29 Nov 2012 18:14:11 -0800
Subject:  Greg Anderson: Generated with Drush iq

---
 commands/pm/info.pm.inc  |   50 ++++++++++++++++++++++++++++++----------------
 commands/pm/pm.drush.inc |    5 +++++
 2 files changed, 38 insertions(+), 17 deletions(-)

diff --git a/commands/pm/info.pm.inc b/commands/pm/info.pm.inc
index 0b92771..eefb72d 100644
--- a/commands/pm/info.pm.inc
+++ b/commands/pm/info.pm.inc
@@ -4,6 +4,7 @@
  * Command callback. Show detailed info for one or more extensions.
  */
 function drush_pm_info() {
+  $result = array();
   $args = pm_parse_arguments(func_get_args());
 
   $extension_info = drush_get_extensions(FALSE);
@@ -27,9 +28,27 @@ function drush_pm_info() {
     else {
       $data = _drush_pm_info_theme($info);
     }
-    drush_print_table(drush_key_value_to_array_table($data));
+    $result[$extension] = $data;
+    drush_print_table(drush_key_value_to_array_table(_drush_pm_info_format_table_data($data)));
     print "\n";
   }
+  return $result;
+}
+
+function _drush_pm_info_format_table_data($data) {
+  $result = array();
+  foreach( $data as $key => $value) {
+    if (is_array($value)) {
+      if (empty($value)) {
+        $value = 'none';
+      }
+      else {
+        $value = implode(', ', $value);
+      }
+    }
+    $result[$key] = $value;
+  }
+  return $result;
 }
 
 /**
@@ -74,23 +93,21 @@ function _drush_pm_info_module($info) {
   }
   $data['Schema version'] = $schema_version;
   if ($major_version == 7) {
-    $data['Files'] = implode(', ', $info->info['files']);
-  }
-  if (count($info->info['dependencies']) > 0) {
-    $requires = implode(', ', $info->info['dependencies']);
+    $data['Files'] = $info->info['files'];
   }
-  else {
-    $requires = "none";
-  }
-  $data['Requires'] = $requires;
+  $data['Requires'] = $info->info['dependencies'];
 
   if ($major_version == 6) {
-    $requiredby = !empty($info->info['dependents'])?$info->info['dependents']:array("none");
+    $requiredby = $info->info['dependents'];
   }
   else {
-    $requiredby = !empty($info->required_by)?array_keys($info->required_by):array("none");
+    $requiredby = array_keys($info->required_by);
+  }
+  $data['Required by'] = $requiredby;
+  if ($info->status == 1) {
+    $role = drush_role_get_class();
+    $data['Permissions'] = $role->getModulePerms($info->name);
   }
-  $data['Required by'] = implode(', ', $requiredby);
 
   return $data;
 }
@@ -107,21 +124,20 @@ function _drush_pm_info_theme($info) {
   $data['PHP'] = $info->info['php'];
   $data['Engine'] = $info->info['engine'];
   $data['Base theme'] = isset($info->base_themes) ? implode($info->base_themes, ', ') : '';
-  $regions = implode(', ', $info->info['regions']);
+  $regions = $info->info['regions'];
   $data['Regions'] = $regions;
-  $features = implode(', ', $info->info['features']);
+  $features = $info->info['features'];
   $data['Features'] = $features;
   if (count($info->info['stylesheets']) > 0) {
     $data['Stylesheets'] = '';
     foreach ($info->info['stylesheets'] as $media => $files) {
-      $files = implode(', ', array_keys($files));
+      $files = array_keys($files);
       $data['Media '.$media] = $files;
     }
   }
   if (count($info->info['scripts']) > 0) {
-    $scripts = implode(', ', array_keys($info->info['scripts']));
+    $scripts = array_keys($info->info['scripts']);
     $data['Scripts'] = $scripts;
   }
   return $data;
 }
-
diff --git a/commands/pm/pm.drush.inc b/commands/pm/pm.drush.inc
index af4784f..a711568 100644
--- a/commands/pm/pm.drush.inc
+++ b/commands/pm/pm.drush.inc
@@ -892,9 +892,14 @@ function drush_pm_enable() {
   // Inform the user of final status.
   $result_extensions = drush_get_named_extensions_list($extensions);
   $problem_extensions = array();
+  $role = drush_role_get_class();
   foreach ($result_extensions as $name => $extension) {
     if ($extension->status) {
       drush_log(dt('!extension was enabled successfully.', array('!extension' => $extension->name)), 'ok');
+      $perms = $role->getModulePerms($extension->name);
+      if (!empty($perms)) {
+        drush_log(dt('!extension defines the following permissions: !perms', array('!extension' => $extension->name, '!perms' => implode(', ', $perms))), 'ok');
+      }
     }
     else {
       $problem_extensions[] = $extension->name;
-- 
1.7.9.5

