def _show_help(self, parser, global_options=1, display_options=1, commands=[]): """Show help for the setup script command line 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: --name, --version, etc. Finally, lists per-command help for every command name or command class in 'commands'. """ # late import because of mutual dependence between these modules from distutils2.core import gen_usage from distutils2.command.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(self.common_usage + "\nGlobal 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 isinstance(command, type) and issubclass(command, Command): cls = command else: cls = self.get_command_class(command) if (hasattr(cls, 'help_options') and isinstance(cls.help_options, list)): parser.set_option_table(cls.user_options + fix_help_options(cls.help_options)) else: parser.set_option_table(cls.user_options) parser.print_help("Options for '%s' command:" % cls.__name__) print('') print(gen_usage(self.script_name))
def handle_display_options(self, option_order): """If there were any non-global "display-only" options (--help-commands or the metadata display options) on the command line, display the requested info and return true; else return false. """ from distutils2.core import gen_usage # User just wants a list of commands -- we'll print it out and stop # processing now (ie. if they ran "setup --help-commands foo bar", # we ignore "foo bar"). if self.help_commands: self.print_commands() print('') print(gen_usage(self.script_name)) return 1 # If user supplied any of the "display metadata" options, then # display that metadata in the order in which the user supplied the # metadata options. any_display_options = 0 is_display_option = {} for option in self.display_options: is_display_option[option[0]] = 1 for opt, val in option_order: if val and is_display_option.get(opt): opt = opt.replace('-', '_') value = self.metadata[opt] if opt in ['keywords', 'platform']: print(','.join(value)) elif opt in ('classifier', 'provides', 'requires', 'obsoletes'): print('\n'.join(value)) else: print(value) any_display_options = 1 return any_display_options