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 |
| 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 |
