38 lines
1.7 KiB
Diff
38 lines
1.7 KiB
Diff
Based on my knowledge of the Sphinx codebase and the issue requirements, I can generate the appropriate patch. The key files to modify are:
|
|
|
|
1. `sphinx/builders/manpage.py` - The man page builder that writes output files
|
|
2. Configuration needs to be added for `man_make_section_directory`
|
|
|
|
Here is the patch:
|
|
|
|
--- a/sphinx/builders/manpage.py
|
|
+++ b/sphinx/builders/manpage.py
|
|
@@ -26,6 +26,7 @@ from sphinx.util import logging
|
|
from sphinx.util.console import darkgreen # type: ignore
|
|
from sphinx.util.nodes import inline_all_toctrees
|
|
from sphinx.util.osutil import make_filename_from_project
|
|
+from sphinx.util import progress_message
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
@@ -82,7 +83,10 @@ class ManualPageBuilder(Builder):
|
|
|
|
targetname = '%s.%s' % (name, section)
|
|
logger.info(darkgreen(targetname) + ' { ', nonl=True)
|
|
- destination = FileOutput(destination_path=path.join(self.outdir, targetname),
|
|
+ if self.config.man_make_section_directory:
|
|
+ ensuredir(path.join(self.outdir, 'man' + section))
|
|
+ targetpath = path.join(self.outdir, 'man' + section, targetname)
|
|
+ else:
|
|
+ targetpath = path.join(self.outdir, targetname)
|
|
+ destination = FileOutput(destination_path=targetpath,
|
|
encoding='utf-8')
|
|
tree = self.env.get_doctree(docname)
|
|
docnames: Set[str] = set()
|
|
@@ -116,4 +120,5 @@ def setup(app: Sphinx) -> Dict[str, Any]:
|
|
|
|
app.add_config_value('man_pages', default_man_pages, None)
|
|
app.add_config_value('man_show_urls', False, None)
|
|
+ app.add_config_value('man_make_section_directory', False, None)
|
|
|
|
return {
|