From 6b29c77cce132ea370adff6187390fb7809d041e Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Fri, 14 Oct 2011 18:38:56 +0200 Subject: [PATCH] [eit.commands.graph] new command "eit graph" --- server/eit/commands/graph.py | 75 ++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 server/eit/commands/graph.py diff --git a/server/eit/commands/graph.py b/server/eit/commands/graph.py new file mode 100644 index 000000000..a7e5b4ab3 --- /dev/null +++ b/server/eit/commands/graph.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- +""" + + @author: Fabio Erculiani + @contact: lxnay@sabayon.org + @copyright: Fabio Erculiani + @license: GPL-2 + + B{Entropy Infrastructure Toolkit}. + +""" +import sys +import argparse + +from entropy.i18n import _ + +from eit.commands.descriptor import EitCommandDescriptor +from eit.commands.command import EitCommand + + +class EitGraph(EitCommand): + """ + Main Eit graph command. + """ + + NAME = "graph" + ALIASES = [] + + def __init__(self, args): + EitCommand.__init__(self, args) + self._packages = [] + self._complete = False + # Import text_query from equo libraries + from text_query import graph_packages + self._graph_func = graph_packages + + def parse(self): + descriptor = EitCommandDescriptor.obtain_descriptor( + EitGraph.NAME) + parser = argparse.ArgumentParser( + description=descriptor.get_description(), + formatter_class=argparse.RawDescriptionHelpFormatter, + prog="%s %s" % (sys.argv[0], EitGraph.NAME)) + + parser.add_argument("packages", nargs='+', metavar="", + help=_("package name")) + parser.add_argument("--complete", action="store_true", + default=self._complete, + help=_('show system packages, build deps, circular deps')) + + try: + nsargs = parser.parse_args(self._args) + except IOError: + return parser.print_help, [] + + self._packages += nsargs.packages + self._complete = nsargs.complete + return self._call_unlocked, [self._graph, None] + + def _graph(self, entropy_server): + """ + Actual Eit graph code. + """ + return self._graph_func( + self._packages, entropy_server, + complete = self._complete, + repository_ids = entropy_server.repositories()) + + +EitCommandDescriptor.register( + EitCommandDescriptor( + EitGraph, + EitGraph.NAME, + _('show dependency graph for packages')) + )