[yum-commits] repoquery.py
skvidal at osuosl.org
skvidal at osuosl.org
Tue Oct 26 18:56:10 UTC 2010
repoquery.py | 33 ++++++++++++++++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
New commits:
commit c3150774b50c37f65f66414e827837bc9c0f75f4
Author: Seth Vidal <skvidal at fedoraproject.org>
Date: Tue Oct 26 14:55:53 2010 -0400
add --search and --searchfields to repoquery
diff --git a/repoquery.py b/repoquery.py
index ee934f2..d57602b 100755
--- a/repoquery.py
+++ b/repoquery.py
@@ -751,6 +751,27 @@ class YumBaseQuery(yum.YumBase):
srpms.extend(self.returnByName(src))
return srpms
+ def yum_search(self, terms):
+ """use yum's search generator to search arbitrary fields"""
+
+ pkgs = []
+ fields = self.options.searchfields
+ if not fields:
+ fields = ['name', 'summary', 'description', 'url']
+
+ matching = self.searchGenerator(fields, terms, keys=True)
+
+ for (po, keys, matched_value) in matching:
+ if isinstance(po, yum.packages.YumInstalledPackage):
+ if self.options.pkgnarrow not in ('all', 'installed', 'extras'):
+ continue
+ if isinstance(po, yum.sqlitesack.YumAvailablePackageSqlite):
+ if self.options.pkgnarrow not in ('all', 'available', 'repos'):
+ continue
+ pkgs.append(po)
+
+ return self.queryPkgFactory(pkgs)
+
def runQuery(self, items):
plain_pkgs = False
if self.options.group:
@@ -762,6 +783,9 @@ class YumBaseQuery(yum.YumBase):
for group in sorted(self.find_groupmember(pkg.name)):
print to_unicode(' @%s' % group)
pkgs = []
+ elif self.options.search:
+ pkgs = self.yum_search(items)
+
else:
if self.options.srpm:
pkgs = self.matchSrcPkgs(items)
@@ -1005,6 +1029,13 @@ 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("--search", action="store_true",
+ dest="search",
+ help="Use yum's search to return pkgs")
+ parser.add_option("--search-fields", action="append", dest="searchfields",
+ default=[],
+ help="search fields to search using --search")
+
(opts, regexs) = parser.parse_args()
@@ -1077,7 +1108,7 @@ def main(args):
if opts.installed:
opts.pkgnarrow = 'installed'
opts.disablerepos = ['*']
-
+
if opts.nevra:
pkgops.append("nevra")
elif len(pkgops) == 0 and len(sackops) == 0:
More information about the Yum-commits
mailing list