Exemplo n.º 1
0
    def _show_help(self,
                   parser,
                   global_options=1,
                   display_options=1,
                   commands=[]):
        """Show help for the command line utility in the form of
        several lists of command-line options. 'parser' should be a
        FancyGetopt instance; do not expect it to be returned in the
        same state, as its option table will be reset to make it
        generate the correct help text.

        If 'global_options' is true, lists the global options:
        --verbose, --dry-run, etc.  If 'display_options' is true, lists
        the "display-only" options: --help-commands, etc. Finally,
        lists per-command help for every command name or command class
        in 'commands'.
        """
        from distutils.core import gen_usage
        from cmdhelper.cmd import Command

        if global_options:
            if display_options:
                options = self._get_toplevel_options()
            else:
                options = self.global_options
            parser.set_option_table(options)
            parser.print_help("Global options:")
            print

        if display_options:
            parser.set_option_table(self.display_options)
            parser.print_help(
                "Information display options (just display " +
                "information, ignore any commands)")
            print

        for command in self.commands:
            if type(command) is ClassType and issubclass(command, Command):
                klass = command
            else:
                klass = self.get_command_class(command)
            if (hasattr(klass, 'help_options') and
                type(klass.help_options) is ListType):
                parser.set_option_table(klass.user_options +
                                        fix_help_options(klass.help_options))
            else:
                parser.set_option_table(klass.user_options)
            parser.print_help("Options for '%s' command:" % klass.__name__)
            print

        print gen_usage(self.script_name)
        return
Exemplo n.º 2
0
 def test_fix_help_options(self):
     help_tuples = [('a', 'b', 'c', 'd'), (1, 2, 3, 4)]
     fancy_options = fix_help_options(help_tuples)
     self.assertEqual(fancy_options[0], ('a', 'b', 'c'))
     self.assertEqual(fancy_options[1], (1, 2, 3))
Exemplo n.º 3
0
 def test_fix_help_options(self):
     help_tuples = [('a', 'b', 'c', 'd'), (1, 2, 3, 4)]
     fancy_options = fix_help_options(help_tuples)
     self.assertEqual(fancy_options[0], ('a', 'b', 'c'))
     self.assertEqual(fancy_options[1], (1, 2, 3))
Exemplo n.º 4
0
 def test_fix_help_options(self):
     help_tuples = [("a", "b", "c", "d"), (1, 2, 3, 4)]
     fancy_options = fix_help_options(help_tuples)
     self.assertEqual(fancy_options[0], ("a", "b", "c"))
     self.assertEqual(fancy_options[1], (1, 2, 3))
Exemplo n.º 5
0
                  ("command class %s must provide " +
                   "'user_options' attribute (a list of tuples)") % \
                  cmd_class

        # If the command class has a list of negative alias options,
        # merge it in with the global negative aliases.
        negative_opt = self.negative_opt
        if hasattr(cmd_class, 'negative_opt'):
            negative_opt = copy(negative_opt)
            negative_opt.update(cmd_class.negative_opt)

        # Check for help_options in command class.  They have a different
        # format (tuple of four) so we need to preprocess them here.
        if (hasattr(cmd_class, 'help_options') and
            type(cmd_class.help_options) is ListType):
            help_options = fix_help_options(cmd_class.help_options)
        else:
            help_options = []


        # All commands support the global options too, just by adding
        # in 'global_options'.
        parser.set_option_table(self.global_options +
                                cmd_class.user_options +
                                help_options)
        parser.set_negative_aliases(negative_opt)
        (args, opts) = parser.getopt(args[1:])
        if hasattr(opts, 'help') and opts.help:
            self._show_help(parser, display_options=0, commands=[cmd_class])
            return