summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/portageq30
1 files changed, 30 insertions, 0 deletions
diff --git a/bin/portageq b/bin/portageq
index b8e12c5fa..ef05a28d7 100755
--- a/bin/portageq
+++ b/bin/portageq
@@ -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>]+