diff options
Diffstat (limited to 'ipalib/cli.py')
-rw-r--r-- | ipalib/cli.py | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/ipalib/cli.py b/ipalib/cli.py index d86647c6a..febf399d9 100644 --- a/ipalib/cli.py +++ b/ipalib/cli.py @@ -241,12 +241,16 @@ def exit_error(error): class help(frontend.Application): - 'Display help on a command.' + '''Display help on a command.''' - takes_args = ['command'] + takes_args = ['command?'] - def run(self, key): - key = str(key) + def run(self, command): + textui = self.Backend.textui + if command is None: + self.print_commands() + return + key = str(command) if key not in self.application: print 'help: no such command %r' % key sys.exit(2) @@ -254,6 +258,24 @@ class help(frontend.Application): print 'Purpose: %s' % cmd.doc self.application.build_parser(cmd).print_help() + def print_commands(self): + std = set(self.Command) - set(self.Application) + print '\nStandard IPA commands:' + for key in sorted(std): + cmd = self.api.Command[key] + self.print_cmd(cmd) + print '\nSpecial CLI commands:' + for cmd in self.api.Application(): + self.print_cmd(cmd) + print '\nUse the --help option to see all the global options' + print '' + + def print_cmd(self, cmd): + print ' %s %s' % ( + to_cli(cmd.name).ljust(self.application.mcl), + cmd.doc, + ) + class console(frontend.Application): """Start the IPA interactive Python console.""" @@ -406,12 +428,9 @@ class CLI(object): if self.api.env.mode == 'unit_test': return if len(self.cmd_argv) < 1: - self.print_commands() - print 'Usage: ipa [global-options] COMMAND' - sys.exit(2) + sys.exit(self.api.Command.help()) key = self.cmd_argv[0] if key not in self: - self.print_commands() print 'ipa: ERROR: unknown command %r' % key sys.exit(2) return self.run_cmd(self[key]) @@ -505,23 +524,7 @@ class CLI(object): ) self.__done.add(name) - def print_commands(self): - std = set(self.api.Command) - set(self.api.Application) - print '\nStandard IPA commands:' - for key in sorted(std): - cmd = self.api.Command[key] - self.print_cmd(cmd) - print '\nSpecial CLI commands:' - for cmd in self.api.Application(): - self.print_cmd(cmd) - print '\nUse the --help option to see all the global options' - print '' - def print_cmd(self, cmd): - print ' %s %s' % ( - to_cli(cmd.name).ljust(self.mcl), - cmd.doc, - ) def run_cmd(self, cmd): kw = self.parse(cmd) |