commit:     5789c1c2d923692f221a17dcfb6a13dcd188d6f1
Author:     Göktürk Yüksek <gokturk <AT> binghamton <DOT> edu>
AuthorDate: Sat Mar  5 06:39:11 2016 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sun Mar  6 02:08:34 2016 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=5789c1c2

bin/portageq: add a matcher to match the orphaned (maintainer-needed) packages

Per GLEP 67, orphaned packages do not have a <maintainer> in metadata.xml.
They can't be matched using '--maintainer-email=maintainer-needed <AT> 
gentoo.org'
anymore. Add a new command line argument '--orphaned' to match the orphaned
packages.

Signed-off-by: Göktürk Yüksek <gokturk <AT> binghamton.edu>
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>

 bin/portageq | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/bin/portageq b/bin/portageq
index 925640b..803e26b 100755
--- a/bin/portageq
+++ b/bin/portageq
@@ -1028,6 +1028,12 @@ class HerdMatcher(object):
                herds = self._herds
                return any(x in herds for x in metadata_xml.herds())
 
+# Match if metadata.xml contains no maintainer (orphaned package)
+def match_orphaned(metadata_xml):
+       if not metadata_xml.maintainers():
+               return True
+       else:
+               return False
 
 def pquery(parser, opts, args):
        portdb = portage.db[portage.root]['porttree'].dbapi
@@ -1090,6 +1096,8 @@ def pquery(parser, opts, args):
                for x in opts.herd:
                        herds.extend(x.split(","))
                xml_matchers.append(HerdMatcher(herds))
+       if opts.orphaned:
+               xml_matchers.append(match_orphaned)
 
        if opts.repo is not None:
                repos = [portdb.repositories[opts.repo]]
@@ -1248,6 +1256,11 @@ def add_pquery_arguments(parser):
                                        "longopt": "--maintainer-email",
                                        "action": "append",
                                        "help": "comma-separated list of 
maintainer email regexes to search for"
+                               },
+                               {
+                                       "longopt": "--orphaned",
+                                       "action": "store_true",
+                                       "help": "match only orphaned 
(maintainer-needed) packages"
                                }
                        )
                ),

Reply via email to