summaryrefslogtreecommitdiff
path: root/cliff/help.py
diff options
context:
space:
mode:
Diffstat (limited to 'cliff/help.py')
-rw-r--r--cliff/help.py77
1 files changed, 0 insertions, 77 deletions
diff --git a/cliff/help.py b/cliff/help.py
deleted file mode 100644
index 9a7f848..0000000
--- a/cliff/help.py
+++ /dev/null
@@ -1,77 +0,0 @@
-import argparse
-import logging
-import sys
-
-from .command import Command
-
-
-class HelpAction(argparse.Action):
- """Provide a custom action so the -h and --help options
- to the main app will print a list of the commands.
-
- The commands are determined by checking the CommandManager
- instance, passed in as the "default" value for the action.
- """
- def __call__(self, parser, namespace, values, option_string=None):
- log = logging.getLogger(__name__)
- app = self.default
- parser.print_help(app.stdout)
- app.stdout.write('\nCommands:\n')
- command_manager = app.command_manager
- for name, ep in sorted(command_manager):
- try:
- factory = ep.load()
- except Exception as err:
- app.stdout.write('Could not load %r\n' % ep)
- continue
- try:
- cmd = factory(self, None)
- except Exception as err:
- app.stdout.write('Could not instantiate %r: %s\n' % (ep, err))
- continue
- one_liner = cmd.get_description().split('\n')[0]
- app.stdout.write(' %-13s %s\n' % (name, one_liner))
- sys.exit(0)
-
-
-class HelpCommand(Command):
- """print detailed help for another command
- """
-
- def get_parser(self, prog_name):
- parser = super(HelpCommand, self).get_parser(prog_name)
- parser.add_argument('cmd',
- nargs='*',
- help='name of the command',
- )
- return parser
-
- def take_action(self, parsed_args):
- if parsed_args.cmd:
- try:
- the_cmd = self.app.command_manager.find_command(
- parsed_args.cmd,
- )
- cmd_factory, cmd_name, search_args = the_cmd
- except ValueError:
- # Did not find an exact match
- cmd = parsed_args.cmd[0]
- fuzzy_matches = [k[0] for k in self.app.command_manager
- if k[0].startswith(cmd)
- ]
- if not fuzzy_matches:
- raise
- self.app.stdout.write('Command "%s" matches:\n' % cmd)
- for fm in fuzzy_matches:
- self.app.stdout.write(' %s\n' % fm)
- return
- cmd = cmd_factory(self.app, search_args)
- full_name = (cmd_name
- if self.app.interactive_mode
- else ' '.join([self.app.NAME, cmd_name])
- )
- cmd_parser = cmd.get_parser(full_name)
- else:
- cmd_parser = self.get_parser(' '.join([self.app.NAME, 'help']))
- cmd_parser.print_help(self.app.stdout)
- return 0