Implement a `portageq contents <root> <category/package>` command
authorZac Medico <zmedico@gentoo.org>
Fri, 21 Dec 2007 11:36:08 +0000 (11:36 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 21 Dec 2007 11:36:08 +0000 (11:36 -0000)
that lists all the files that are installed for a given package,
with one file listed on each line.

svn path=/main/trunk/; revision=9035

bin/portageq

index ea97c3e73ee4bc55ecc11766c627088bdd95fb1d..a29669a243b72cce70efc57773fc03cb777e4c0c 100755 (executable)
@@ -123,6 +123,31 @@ def metadata(argv):
 
 metadata.uses_root = True
 
+def contents(argv):
+       """<root> <category/package>
+       List the files that are installed for a given package, with
+       one file listed on each line. All file names will begin with
+       <root>.
+       """
+       if len(argv) != 2:
+               print "ERROR: expected 2 parameters, got %d!" % len(argv)
+               return 2
+
+       root, cpv = argv
+       vartree = portage.db[root]["vartree"]
+       if not vartree.dbapi.cpv_exists(cpv):
+               sys.stderr.write("Package not found: '%s'\n" % cpv)
+               return 1
+       cat, pkg = portage.catsplit(cpv)
+       db = portage.dblink(cat, pkg, root, vartree.settings,
+               treetype="vartree", vartree=vartree)
+       file_list = db.getcontents().keys()
+       file_list.sort()
+       for f in file_list:
+               sys.stdout.write("%s\n" % f)
+       sys.stdout.flush()
+contents.uses_root = True
+
 def owners(argv):
        """<root> [<filename>]+
        Given a list of files, print the packages that own the files and which