diff options
-rwxr-xr-x | bin/portageq | 30 |
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>]+ |