On Mon, 2010-12-20 at 09:57 -0500, James Antill wrote:
> I think "tree_level" means "the
> maximum level of the tree that we will show? If so you might want to
> change the option to --tree-level-max or something. 

Taking your remarks into account, there is a cleaned patch. I will
generate the second patch for --tree-format if you agree with this one.

Thanks for your comments,

Pierre
From cb9dcd8224267ba7265372e331bd22e0eab81a4e Mon Sep 17 00:00:00 2001
From: pingou <pin...@pingoured.fr>
Date: Mon, 20 Dec 2010 18:52:33 +0100
Subject: [PATCH] Add a tree max level option to specify the maximum level of the tree shown

---
 repoquery.py |   35 ++++++++++++++++++++++++-----------
 1 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/repoquery.py b/repoquery.py
index c14f296..96e7a4f 100755
--- a/repoquery.py
+++ b/repoquery.py
@@ -317,6 +317,13 @@ class pkgQuery:
         req      = kw.get('req', 'cmd line')
         level    = kw.get('level', 0)
         all_reqs = kw.get('all_reqs', {})
+        
+        if str(kw['tree_max_level']).lower() != 'all':
+            try: 
+                kw['tree_max_level'] = int(kw['tree_max_level'])
+            except ValueError, er:
+                kw['tree_max_level'] = 'all'
+
         __req2pkgs = {}
         def req2pkgs(ignore, req):
             req = str(req)
@@ -359,16 +366,19 @@ class pkgQuery:
         tups = getattr(pkg, prco_type)
         rpkgs, loc_reqs = self._tree_maybe_add_pkgs(all_reqs, tups, req2pkgs)
         nlevel = level + 1
-        for rpkg in sorted(rpkgs):
-            if pkg.verEQ(rpkg):
-                continue
-            if rpkgs[rpkg] is None:
-                req = self._tree_pkg2val(loc_reqs, rpkg)
-                self._tree_print_req(rpkg, req, nlevel)
-                continue
-            self._fmt_tree_prov(prco_type,
-                                pkg=rpkg, level=nlevel, all_reqs=all_reqs,
-                                req=self._tree_pkg2val(loc_reqs, rpkg))
+        if str(kw['tree_max_level']).lower() == 'all' or int(kw['tree_max_level']) > int(nlevel -1):
+            for rpkg in sorted(rpkgs):
+                if pkg.verEQ(rpkg):
+                    continue
+                if rpkgs[rpkg] is None:
+                    req = self._tree_pkg2val(loc_reqs, rpkg)
+                    self._tree_print_req(rpkg, req, nlevel)
+                    continue
+                self._fmt_tree_prov(prco_type,
+                                    pkg=rpkg, level=nlevel, all_reqs=all_reqs,
+                                    req=self._tree_pkg2val(loc_reqs, rpkg),
+                                    tree_max_level = kw['tree_max_level'])
+                                    
     def fmt_tree_requires(self, **kw):
         return self._fmt_tree_prov('requires', **kw)
     def fmt_tree_conflicts(self, **kw):
@@ -837,7 +847,8 @@ class YumBaseQuery(yum.YumBase):
                 print to_unicode(pkg)
             for oper in self.pkgops:
                 try:
-                    out = pkg.doQuery(oper)
+                    out = pkg.doQuery(oper, 
+                        tree_max_level = self.options.tree_max_level)
                     if out:
                         print to_unicode(out)
                 except queryError, e:
@@ -1037,6 +1048,8 @@ def main(args):
     parser.add_option("--tree-whatrequires", action="store_true",
                       dest="tree_what_requires",
                       help="list recursive what requires, in tree form")
+    parser.add_option("--tree-max-level", dest="tree_max_level", default = "all",
+                      help="Indicates the maximal level of the tree, can be all or an int")
     parser.add_option("--search", action="store_true",
                       dest="search", default=False,
                       help="Use yum's search to return pkgs")
-- 
1.7.2.3

_______________________________________________
Yum-devel mailing list
Yum-devel@lists.baseurl.org
http://lists.baseurl.org/mailman/listinfo/yum-devel

Reply via email to