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

svn path=/main/branches/2.1.2/; revision=9037

bin/portageq

index 8ffac0b75ecd777073cfbb60892ff1932ecc66dd..fb5decc45f8ba691b069a13fdfbecdfe950a7f5c 100755 (executable)
@@ -124,6 +124,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