Revision 320af781 kamaki/cli/argument/__init__.py
b/kamaki/cli/argument/__init__.py | ||
---|---|---|
461 | 461 |
cur, finish = next, '\n%s' % tab2 |
462 | 462 |
return ret + '\n' |
463 | 463 |
|
464 |
@staticmethod |
|
465 |
def _patch_with_required_args(arguments, required): |
|
466 |
if isinstance(required, tuple): |
|
467 |
return ' '.join([ArgumentParseManager._patch_with_required_args( |
|
468 |
arguments, k) for k in required]) |
|
469 |
elif isinstance(required, list): |
|
470 |
return '< %s >' % ' | '.join([ |
|
471 |
ArgumentParseManager._patch_with_required_args( |
|
472 |
arguments, k) for k in required]) |
|
473 |
arg = arguments[required] |
|
474 |
return '/'.join(arg.parsed_name) + ( |
|
475 |
' %s [...]' % required.upper() if arg.arity < 0 else ( |
|
476 |
' %s' % required.upper() if arg.arity else '')) |
|
477 |
|
|
464 | 478 |
def print_help(self, out=stderr): |
465 | 479 |
if self.required: |
466 | 480 |
tmp_args = dict(self.arguments) |
467 | 481 |
for term in self.required2list(self.required): |
468 | 482 |
tmp_args.pop(term) |
469 | 483 |
tmp_parser = ArgumentParseManager(self._exe, tmp_args) |
470 |
tmp_parser.syntax = self.syntax |
|
484 |
tmp_parser.syntax = self.syntax + self._patch_with_required_args( |
|
485 |
self.arguments, self.required) |
|
471 | 486 |
tmp_parser.parser.description = '%s\n\nrequired arguments:\n%s' % ( |
472 | 487 |
self.parser.description, |
473 | 488 |
self.required2str(self.required, self.arguments)) |
... | ... | |
540 | 555 |
pkargs = (new_args,) if new_args else () |
541 | 556 |
self._parsed, unparsed = self.parser.parse_known_args(*pkargs) |
542 | 557 |
pdict = vars(self._parsed) |
543 |
diff = set(self.required or []).difference( |
|
544 |
[k for k in pdict if pdict[k] != None])
|
|
558 |
diff = set(self.required or []).difference([
|
|
559 |
k for k in pdict if pdict[k] != None]) |
|
545 | 560 |
if diff: |
546 | 561 |
self.print_help() |
547 | 562 |
miss = ['/'.join(self.arguments[k].parsed_name) for k in diff] |
Also available in: Unified diff