diff options
author | Brian Harring <ferringb@gmail.com> | 2007-04-29 07:36:24 -0700 |
---|---|---|
committer | Brian Harring <ferringb@gmail.com> | 2007-04-29 07:36:24 -0700 |
commit | 5af9ac83e27226f5f3d465c9b2a1b60779c00707 (patch) | |
tree | 33aff28410f052b9f9c8b91de6c89846f2d945f6 /examples/pkg_info.py | |
parent | set of quick gross hacks to depends blocker handling to continue the normal '... (diff) | |
download | pkgcore-5af9ac83e27226f5f3d465c9b2a1b60779c00707.tar.gz pkgcore-5af9ac83e27226f5f3d465c9b2a1b60779c00707.tar.bz2 pkgcore-5af9ac83e27226f5f3d465c9b2a1b60779c00707.zip |
big ass merge of charlies work, digest/manifest, misc cleanup
Diffstat (limited to 'examples/pkg_info.py')
-rwxr-xr-x | examples/pkg_info.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/examples/pkg_info.py b/examples/pkg_info.py new file mode 100755 index 000000000..cd865f5de --- /dev/null +++ b/examples/pkg_info.py @@ -0,0 +1,52 @@ +#! /usr/bin/env python + +import sys, itertools + +try: + from pkgcore.util import commandline, parserestrict + from pkgcore.restrictions.packages import AlwaysTrue + from pkgcore.restrictions.boolean import OrRestriction +except ImportError: + print >> sys.stderr, 'Cannot import pkgcore!' + print >> sys.stderr, 'Verify it is properly installed and/or ' \ + 'PYTHONPATH is set correctly.' + if '--debug' not in sys.argv: + print >> sys.stderr, 'Add --debug to the commandline for a traceback.' + else: + raise + sys.exit(1) + +class OptionParser(commandline.OptionParser): + def __init__(self, **kwargs): + commandline.OptionParser.__init__( + self, description=__doc__, usage='%prog <atom>', + **kwargs) + def check_values(self, values, args): + values, args = commandline.OptionParser.check_values( + self, values, args) + values.repo = values.config.get_default('domain').repos[1] + values.restrict = OrRestriction(*commandline.convert_to_restrict(args)) + return values, () + +def getter(pkg): + return (pkg.key, getattr(pkg, "maintainers", None), + getattr(pkg, "herds", None)) + +def main(options, out, err): + for t, pkgs in itertools.groupby( + options.repo.itermatch(options.restrict, sorter=sorted), getter): + out.write(t[0]) + out.first_prefix = " " + for pkg in pkgs: + out.write(pkg.cpvstr) + out.first_prefix = "" + out.write() + for item, values in zip(("maintainer", "herd"), t[1:]): + if values: + out.write("%s(s): %s" % + (item.title(), ', '.join((unicode(x) for x in values)))) + out.write() + out.write() + +if __name__ == '__main__': + commandline.main({None: (OptionParser, main)}) |