267: Finished builtin CLI api command

This commit is contained in:
Jason Gerard DeRose 2008-09-08 21:37:02 +00:00
parent 641403278e
commit e74713a076
2 changed files with 34 additions and 8 deletions

View File

@ -27,6 +27,7 @@ import code
import optparse
import public
import errors
import plugable
def to_cli(name):
@ -70,6 +71,37 @@ class console(public.Application):
class print_api(public.Application):
'Print details on the loaded plugins.'
def __call__(self):
lines = self.__traverse()
ml = max(len(l[1]) for l in lines)
for line in lines:
if line[0] == 0:
print ''
print '%s%s %r' % (
' ' * line[0],
line[1].ljust(ml),
line[2],
)
def __traverse(self):
lines = []
for name in self.api:
namespace = self.api[name]
self.__traverse_namespace(name, namespace, lines)
return lines
def __traverse_namespace(self, name, namespace, lines, tab=0):
lines.append((tab, name, namespace))
for member_name in namespace:
member = namespace[member_name]
lines.append((tab + 1, member_name, member))
if not hasattr(member, '__iter__'):
continue
for n in member:
attr = member[n]
if isinstance(attr, plugable.NameSpace):
self.__traverse_namespace(n, attr, lines, tab + 2)
class KWCollector(object):
def __init__(self):
@ -89,7 +121,6 @@ class KWCollector(object):
return dict(self.__d)
class CLI(object):
__d = None
__mcl = None
@ -184,8 +215,6 @@ class CLI(object):
error = e.error
cmd(*args, **kw)
def parse(self, cmd, argv):
parser = self.build_parser(cmd)
(kwc, args) = parser.parse_args(argv, KWCollector())
@ -202,8 +231,6 @@ class CLI(object):
)
return parser
def __get_mcl(self):
"""
Returns the Max Command Length.

View File

@ -354,7 +354,7 @@ class Plugin(ReadOnly):
Returns a fully qualified module_name.class_name() representation that
could be used to construct this Plugin instance.
"""
return '%s.%s()' % (
return '%s.%s' % (
self.__class__.__module__,
self.__class__.__name__
)
@ -450,11 +450,10 @@ class PluginProxy(SetProxy):
Returns a Python expression that could be used to construct this Proxy
instance given the appropriate environment.
"""
return '%s(%s, %r, %r)' % (
return '%s(%s, %r)' % (
self.__class__.__name__,
self.__base.__name__,
self.__target,
self.__name_attr,
)