[yum-git] Branch 'yum-3_2_X' - output.py

James Antill james at linux.duke.edu
Tue Sep 16 05:36:48 UTC 2008


 output.py |   55 ++++++++++++++++++++++++++++++++++---------------------
 1 file changed, 34 insertions(+), 21 deletions(-)

New commits:
commit ee89bd19b932aa8192229d720c77bd5454df6e97
Author: James Antill <james at and.org>
Date:   Tue Sep 16 01:36:42 2008 -0400

    Use calcColumns for groupinfo -v, per. group. Tidy up group section printing

diff --git a/output.py b/output.py
index 1d1f570..95efac4 100644
--- a/output.py
+++ b/output.py
@@ -549,8 +549,20 @@ class YumOutput:
             ret.setdefault(pkg.name, []).append((apkg, ipkg))
         return ret
 
+    def _calcDataPkgColumns(self, data, pkg_names, pkg_names2pkgs):
+        for item in pkg_names:
+            if item not in pkg_names2pkgs:
+                continue
+            for (apkg, ipkg) in pkg_names2pkgs[item]:
+                pkg = ipkg or apkg
+                envra = len(str(pkg))
+                rid   = len(pkg.repoid)
+                for (d, v) in (('envra', envra), ('rid', rid)):
+                    data[d].setdefault(v, 0)
+                    data[d][v] += 1
+
     def _displayPkgsFromNames(self, pkg_names, verbose, pkg_names2pkgs,
-                              indent='   '):
+                              indent='   ', columns=None):
         if not verbose:
             for item in sorted(pkg_names):
                 print '%s%s' % (indent, item)
@@ -562,7 +574,8 @@ class YumOutput:
                 for (apkg, ipkg) in sorted(pkg_names2pkgs[item],
                                            key=lambda x: x[1] or x[0]):
                     self.simpleEnvraList(ipkg or apkg, ui_overflow=True,
-                                         indent=indent, highlight=ipkg and apkg)
+                                         indent=indent, highlight=ipkg and apkg,
+                                         columns=columns)
     
     def displayPkgsInGroups(self, group):
         mylang = get_my_lang_code()
@@ -574,25 +587,25 @@ class YumOutput:
             pkg_names2pkgs = self._group_names2aipkgs(group.packages)
         if group.descriptionByLang(mylang) != "":
             print _(' Description: %s') % to_unicode(group.descriptionByLang(mylang))
-        if len(group.mandatory_packages) > 0:
-            print _(' Mandatory Packages:')
-            self._displayPkgsFromNames(group.mandatory_packages, verb,
-                                       pkg_names2pkgs)
-
-        if len(group.default_packages) > 0:
-            print _(' Default Packages:')
-            self._displayPkgsFromNames(group.default_packages, verb,
-                                       pkg_names2pkgs)
-        
-        if len(group.optional_packages) > 0:
-            print _(' Optional Packages:')
-            self._displayPkgsFromNames(group.optional_packages, verb,
-                                       pkg_names2pkgs)
-
-        if len(group.conditional_packages) > 0:
-            print _(' Conditional Packages:')
-            self._displayPkgsFromNames(group.conditional_packages, verb,
-                                       pkg_names2pkgs)
+
+        sections = ((_(' Mandatory Packages:'),   group.mandatory_packages),
+                    (_(' Default Packages:'),     group.default_packages),
+                    (_(' Optional Packages:'),    group.optional_packages),
+                    (_(' Conditional Packages:'), group.conditional_packages))
+        columns = None
+        if verb:
+            data = {'envra' : {}, 'rid' : {}}
+            for (section_name, pkg_names) in sections:
+                self._calcDataPkgColumns(data, pkg_names, pkg_names2pkgs)
+            data = [data['envra'], data['rid']]
+            columns = self.calcColumns(data)
+            columns = (-columns[0], -columns[1])
+
+        for (section_name, pkg_names) in sections:
+            if len(pkg_names) > 0:
+                print section_name
+                self._displayPkgsFromNames(pkg_names, verb, pkg_names2pkgs,
+                                           columns=columns)
 
     def depListOutput(self, results):
         """take a list of findDeps results and 'pretty print' the output"""



More information about the Yum-cvs-commits mailing list