diff options
Diffstat (limited to 'sphinx/builders/manpage.py')
-rw-r--r-- | sphinx/builders/manpage.py | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/sphinx/builders/manpage.py b/sphinx/builders/manpage.py index fd4ad8841..6658adc38 100644 --- a/sphinx/builders/manpage.py +++ b/sphinx/builders/manpage.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- """ sphinx.builders.manpage ~~~~~~~~~~~~~~~~~~~~~~~ @@ -13,7 +12,6 @@ from os import path from docutils.frontend import OptionParser from docutils.io import FileOutput -from six import string_types from sphinx import addnodes from sphinx.builders import Builder @@ -22,13 +20,14 @@ from sphinx.locale import __ from sphinx.util import logging from sphinx.util.console import bold, darkgreen # type: ignore from sphinx.util.nodes import inline_all_toctrees -from sphinx.util.osutil import make_filename +from sphinx.util.osutil import make_filename_from_project from sphinx.writers.manpage import ManualPageWriter, ManualPageTranslator if False: # For type annotation - from typing import Any, Dict, List, Set, Union # NOQA + from typing import Any, Dict, List, Set, Tuple, Union # NOQA from sphinx.application import Sphinx # NOQA + from sphinx.config import Config # NOQA logger = logging.getLogger(__name__) @@ -43,7 +42,7 @@ class ManualPageBuilder(Builder): epilog = __('The manual pages are in %(outdir)s.') default_translator_class = ManualPageTranslator - supported_image_types = [] # type: List[unicode] + supported_image_types = [] # type: List[str] def init(self): # type: () -> None @@ -52,11 +51,11 @@ class ManualPageBuilder(Builder): 'will be written')) def get_outdated_docs(self): - # type: () -> Union[unicode, List[unicode]] + # type: () -> Union[str, List[str]] return 'all manpages' # for now def get_target_uri(self, docname, typ=None): - # type: (unicode, unicode) -> unicode + # type: (str, str) -> str if typ == 'token': return '' raise NoUri @@ -67,7 +66,7 @@ class ManualPageBuilder(Builder): docsettings = OptionParser( defaults=self.env.settings, components=(docwriter,), - read_config_files=True).get_default_values() + read_config_files=True).get_default_values() # type: Any logger.info(bold(__('writing... ')), nonl=True) @@ -77,12 +76,17 @@ class ManualPageBuilder(Builder): logger.warning(__('"man_pages" config value references unknown ' 'document %s'), docname) continue - if isinstance(authors, string_types): + if isinstance(authors, str): if authors: authors = [authors] else: authors = [] + docsettings.title = name + docsettings.subtitle = description + docsettings.authors = authors + docsettings.section = section + targetname = '%s.%s' % (name, section) logger.info(darkgreen(targetname) + ' { ', nonl=True) destination = FileOutput( @@ -90,21 +94,16 @@ class ManualPageBuilder(Builder): encoding='utf-8') tree = self.env.get_doctree(docname) - docnames = set() # type: Set[unicode] + docnames = set() # type: Set[str] largetree = inline_all_toctrees(self, docnames, docname, tree, darkgreen, [docname]) + largetree.settings = docsettings logger.info('} ', nonl=True) self.env.resolve_references(largetree, docname, self) # remove pending_xref nodes for pendingnode in largetree.traverse(addnodes.pending_xref): pendingnode.replace_self(pendingnode.children) - largetree.settings = docsettings - largetree.settings.title = name - largetree.settings.subtitle = description - largetree.settings.authors = authors - largetree.settings.section = section - docwriter.write(largetree, destination) logger.info('') @@ -113,14 +112,19 @@ class ManualPageBuilder(Builder): pass +def default_man_pages(config): + # type: (Config) -> List[Tuple[str, str, str, List[str], int]] + """ Better default man_pages settings. """ + filename = make_filename_from_project(config.project) + return [(config.master_doc, filename, '%s %s' % (config.project, config.release), + [config.author], 1)] + + def setup(app): - # type: (Sphinx) -> Dict[unicode, Any] + # type: (Sphinx) -> Dict[str, Any] app.add_builder(ManualPageBuilder) - app.add_config_value('man_pages', - lambda self: [(self.master_doc, make_filename(self.project).lower(), - '%s %s' % (self.project, self.release), [], 1)], - None) + app.add_config_value('man_pages', default_man_pages, None) app.add_config_value('man_show_urls', False, None) return { |