comparison commandparser/command.py @ 12:e0a3148e67a8

bug fix and a short overhaul of documentation
author Jeff Hammel <jhammel@mozilla.com>
date Mon, 28 Jan 2013 19:54:36 -0800
parents a3599e4db9a4
children
comparison
equal deleted inserted replaced
11:03db23600c1f 12:e0a3148e67a8
21 class Undefined(object): 21 class Undefined(object):
22 def __init__(self, default): 22 def __init__(self, default):
23 self.default=default 23 self.default=default
24 24
25 class CommandParser(OptionParser): 25 class CommandParser(OptionParser):
26 # TODO: add `help` command
27 26
28 def __init__(self, _class, description=None): 27 def __init__(self, _class, description=None):
29 self._class = _class 28 self._class = _class
30 self.commands = {} 29 self.commands = {}
31 init = self.command(_class.__init__) 30 init = self.command(_class.__init__)
163 name = function.func_name 162 name = function.func_name
164 if function.__doc__: 163 if function.__doc__:
165 doc = cleandoc(function.__doc__) 164 doc = cleandoc(function.__doc__)
166 else: 165 else:
167 doc = '' 166 doc = ''
168 args, varargs, varkw, defaults = inspect.getargspec(function) 167 _args, varargs, varkw, defaults = inspect.getargspec(function)
169 if defaults: 168 if defaults:
170 args = args[1:-len(defaults)] 169 args = _args[1:-len(defaults)]
171 optional = dict(zip(args[-len(defaults):], defaults)) 170 optional = dict(zip(_args[-len(defaults):], defaults))
172 else: 171 else:
173 args = args[1:] 172 args = _args[1:]
174 optional = None 173 optional = None
175 command = {'doc': doc, 174 command = {'doc': doc,
176 'name': name, 175 'name': name,
177 'args': args, 176 'args': args, # mandatory arguments
178 'optional': optional, 177 'optional': optional,
179 'varargs': varargs 178 'varargs': varargs
180 } 179 }
181 return command 180 return command
182 181