Beispiel #1
0
    def MainModuleHelp(self):
        """Describe the key flags of the main module.

    Returns:
      string describing the key flags of a module.
    """
        return self.ModuleHelp(_helpers.GetMainModule())
Beispiel #2
0
    def WriteHelpInXMLFormat(self, outfile=None):
        """Outputs flag documentation in XML format.

    NOTE: We use element names that are consistent with those used by
    the C++ command-line flag library, from
    http://code.google.com/p/google-gflags
    We also use a few new elements (e.g., <key>), but we do not
    interfere / overlap with existing XML elements used by the C++
    library.  Please maintain this consistency.

    Args:
      outfile: File object we write to.  Default None means sys.stdout.
    """
        outfile = outfile or sys.stdout

        outfile.write('<?xml version=\"1.0\"?>\n')
        outfile.write('<AllFlags>\n')
        indent = '  '
        _helpers.WriteSimpleXMLElement(outfile, 'program',
                                       os.path.basename(sys.argv[0]), indent)

        usage_doc = sys.modules['__main__'].__doc__
        if not usage_doc:
            usage_doc = '\nUSAGE: %s [flags]\n' % sys.argv[0]
        else:
            usage_doc = usage_doc.replace('%s', sys.argv[0])
        _helpers.WriteSimpleXMLElement(outfile, 'usage', usage_doc, indent)

        # Get list of key flags for the main module.
        key_flags = self._GetKeyFlagsForModule(_helpers.GetMainModule())

        # Sort flags by declaring module name and next by flag name.
        flags_by_module = self.FlagsByModuleDict()
        all_module_names = list(flags_by_module.keys())
        all_module_names.sort()
        for module_name in all_module_names:
            flag_list = [(f.name, f) for f in flags_by_module[module_name]]
            flag_list.sort()
            for unused_flag_name, flag in flag_list:
                is_key = flag in key_flags
                flag.WriteInfoInXMLFormat(outfile,
                                          module_name,
                                          is_key=is_key,
                                          indent=indent)

        outfile.write('</AllFlags>\n')
        outfile.flush()
Beispiel #3
0
    def GetHelp(self, prefix='', include_special_flags=True):
        """Generates a help string for all known flags.

    Args:
      prefix: str, per-line output prefix.
      include_special_flags: bool, whether to include description of
        _SPECIAL_FLAGS, i.e. --flagfile and --undefok.

    Returns:
      str, formatted help message.
    """
        # TODO(vrusinov): this function needs a test.
        helplist = []

        flags_by_module = self.FlagsByModuleDict()
        if flags_by_module:
            modules = sorted(flags_by_module)

            # Print the help for the main module first, if possible.
            main_module = _helpers.GetMainModule()
            if main_module in modules:
                modules.remove(main_module)
                modules = [main_module] + modules

            for module in modules:
                self.__RenderOurModuleFlags(module, helplist)
            if include_special_flags:
                self.__RenderModuleFlags(
                    'gflags',
                    _helpers.SPECIAL_FLAGS.FlagDict().values(), helplist)
        else:
            # Just print one long list of flags.
            values = self.FlagDict().values()
            if include_special_flags:
                values.append(_helpers.SPECIAL_FLAGS.FlagDict().values())
            self.__RenderFlagList(values, helplist, prefix)

        return '\n'.join(helplist)