Add a new portageq metadata function that wraps dbapi.aux_get() so that things like...
authorZac Medico <zmedico@gentoo.org>
Sat, 15 Jul 2006 19:46:43 +0000 (19:46 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 15 Jul 2006 19:46:43 +0000 (19:46 -0000)
svn path=/main/trunk/; revision=3893

bin/portageq

index b8e12c5fa35fff19c66d64befe536752f3fe5d98..ef05a28d722f862a199828ecbc6c55532b62421e 100755 (executable)
@@ -80,6 +80,36 @@ def mass_best_version(argv):
                sys.exit(1)
 mass_best_version.uses_root = True
 
+def metadata(argv):
+       """<root> <pkgtype> <category/package> [<key>]+
+       Returns metadata values for the specified package.
+       """
+       if (len(argv) < 4):
+               print >> sys.stderr, "ERROR: insufficient parameters!"
+               sys.exit(2)
+
+       root, pkgtype, pkgspec = argv[0:3]
+       metakeys = argv[3:]
+       type_map = {
+               "ebuild":"porttree",
+               "binary":"bintree",
+               "installed":"vartree"}
+       if pkgtype not in type_map:
+               print >> sys.stderr, "Unrecognized package type: '%s'" % pkgtype
+               sys.exit(1)
+       trees = portage.db
+       if os.path.realpath(root) == os.path.realpath(portage.settings["ROOT"]):
+               root = portage.settings["ROOT"] # contains the normalized $ROOT
+       try:
+                       values = trees[root][type_map[pkgtype]].dbapi.aux_get(
+                               pkgspec, metakeys)
+                       for value in values:
+                               print value
+       except KeyError:
+               print >> sys.stderr, "Package not found: '%s'" % pkgspec
+               sys.exit(1)
+
+metadata.uses_root = True
 
 def best_visible(argv):
        """<root> [<category/package>]+