diff options
Diffstat (limited to 'pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py')
-rw-r--r-- | pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py | 125 |
1 files changed, 2 insertions, 123 deletions
diff --git a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py index 9a00da567fa9..fcd5af4ffe31 100644 --- a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py +++ b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py @@ -17,10 +17,9 @@ from . import md from . import parallel from .asciidoc import AsciiDocRenderer, asciidoc_escape from .commonmark import CommonMarkRenderer -from .docbook import DocBookRenderer, make_xml_id from .html import HTMLRenderer from .manpage import ManpageRenderer, man_escape -from .manual_structure import XrefTarget +from .manual_structure import make_xml_id, XrefTarget from .md import Converter, md_escape, md_make_code from .types import OptionLoc, Option, RenderedOption @@ -184,100 +183,6 @@ class OptionDocsRestrictions: def example_open(self, token: Token, tokens: Sequence[Token], i: int) -> str: raise RuntimeError("md token not supported in options doc", token) -class OptionsDocBookRenderer(OptionDocsRestrictions, DocBookRenderer): - # TODO keep optionsDocBook diff small. remove soon if rendering is still good. - def ordered_list_open(self, token: Token, tokens: Sequence[Token], i: int) -> str: - token.meta['compact'] = False - return super().ordered_list_open(token, tokens, i) - def bullet_list_open(self, token: Token, tokens: Sequence[Token], i: int) -> str: - token.meta['compact'] = False - return super().bullet_list_open(token, tokens, i) - -class DocBookConverter(BaseConverter[OptionsDocBookRenderer]): - __option_block_separator__ = "" - - def __init__(self, manpage_urls: Mapping[str, str], - revision: str, - document_type: str, - varlist_id: str, - id_prefix: str): - super().__init__(revision) - self._renderer = OptionsDocBookRenderer(manpage_urls) - self._document_type = document_type - self._varlist_id = varlist_id - self._id_prefix = id_prefix - - def _parallel_render_prepare(self) -> Any: - return (self._renderer._manpage_urls, self._revision, self._document_type, - self._varlist_id, self._id_prefix) - @classmethod - def _parallel_render_init_worker(cls, a: Any) -> DocBookConverter: - return cls(*a) - - def _related_packages_header(self) -> list[str]: - return [ - "<para>", - " <emphasis>Related packages:</emphasis>", - "</para>", - ] - - def _decl_def_header(self, header: str) -> list[str]: - return [ - f"<para><emphasis>{header}:</emphasis></para>", - "<simplelist>" - ] - - def _decl_def_entry(self, href: Optional[str], name: str) -> list[str]: - if href is not None: - href = " xlink:href=" + xml.quoteattr(href) - return [ - f"<member><filename{href}>", - xml.escape(name), - "</filename></member>" - ] - - def _decl_def_footer(self) -> list[str]: - return [ "</simplelist>" ] - - def finalize(self, *, fragment: bool = False) -> str: - result = [] - - if not fragment: - result.append('<?xml version="1.0" encoding="UTF-8"?>') - if self._document_type == 'appendix': - result += [ - '<appendix xmlns="http://docbook.org/ns/docbook"', - ' xml:id="appendix-configuration-options">', - ' <title>Configuration Options</title>', - ] - result += [ - '<variablelist xmlns:xlink="http://www.w3.org/1999/xlink"', - ' xmlns:nixos="tag:nixos.org"', - ' xmlns="http://docbook.org/ns/docbook"', - f' xml:id="{self._varlist_id}">', - ] - - for (name, opt) in self._sorted_options(): - id = make_xml_id(self._id_prefix + name) - result += [ - "<varlistentry>", - # NOTE adding extra spaces here introduces spaces into xref link expansions - (f"<term xlink:href={xml.quoteattr('#' + id)} xml:id={xml.quoteattr(id)}>" + - f"<option>{xml.escape(name)}</option></term>"), - "<listitem>" - ] - result += opt.lines - result += [ - "</listitem>", - "</varlistentry>" - ] - - result.append("</variablelist>") - if self._document_type == 'appendix': - result.append("</appendix>") - - return "\n".join(result) - class OptionsManpageRenderer(OptionDocsRestrictions, ManpageRenderer): pass @@ -578,15 +483,6 @@ class HTMLConverter(BaseConverter[OptionsHTMLRenderer]): return "\n".join(result) -def _build_cli_db(p: argparse.ArgumentParser) -> None: - p.add_argument('--manpage-urls', required=True) - p.add_argument('--revision', required=True) - p.add_argument('--document-type', required=True) - p.add_argument('--varlist-id', required=True) - p.add_argument('--id-prefix', required=True) - p.add_argument("infile") - p.add_argument("outfile") - def _build_cli_manpage(p: argparse.ArgumentParser) -> None: p.add_argument('--revision', required=True) p.add_argument("--header", type=Path) @@ -606,20 +502,6 @@ def _build_cli_asciidoc(p: argparse.ArgumentParser) -> None: p.add_argument("infile") p.add_argument("outfile") -def _run_cli_db(args: argparse.Namespace) -> None: - with open(args.manpage_urls, 'r') as manpage_urls: - md = DocBookConverter( - json.load(manpage_urls), - revision = args.revision, - document_type = args.document_type, - varlist_id = args.varlist_id, - id_prefix = args.id_prefix) - - with open(args.infile, 'r') as f: - md.add_options(json.load(f)) - with open(args.outfile, 'w') as f: - f.write(md.finalize()) - def _run_cli_manpage(args: argparse.Namespace) -> None: header = None footer = None @@ -663,15 +545,12 @@ def _run_cli_asciidoc(args: argparse.Namespace) -> None: def build_cli(p: argparse.ArgumentParser) -> None: formats = p.add_subparsers(dest='format', required=True) - _build_cli_db(formats.add_parser('docbook')) _build_cli_manpage(formats.add_parser('manpage')) _build_cli_commonmark(formats.add_parser('commonmark')) _build_cli_asciidoc(formats.add_parser('asciidoc')) def run_cli(args: argparse.Namespace) -> None: - if args.format == 'docbook': - _run_cli_db(args) - elif args.format == 'manpage': + if args.format == 'manpage': _run_cli_manpage(args) elif args.format == 'commonmark': _run_cli_commonmark(args) |