Mercurial > hg > CommandParser
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 (2013-01-29) |
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 |