summaryrefslogtreecommitdiff
path: root/sphinx/builders/manpage.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/builders/manpage.py')
-rw-r--r--sphinx/builders/manpage.py46
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 {