From ad65a699f93a7659739287882ca27c58c564670b Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Fri, 25 Jun 2021 19:48:43 +0200 Subject: docs: Initial reference manual generator --- docs/refman/main.py | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 docs/refman/main.py (limited to 'docs/refman/main.py') diff --git a/docs/refman/main.py b/docs/refman/main.py new file mode 100644 index 0000000..96698ae --- /dev/null +++ b/docs/refman/main.py @@ -0,0 +1,68 @@ +# Copyright 2021 The Meson development team + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from pathlib import Path +import argparse +import typing as T + +from mesonbuild import mlog + +from .loaderbase import LoaderBase +from .loaderyaml import LoaderYAML + +from .generatorbase import GeneratorBase +from .generatorprint import GeneratorPrint + +meson_root = Path(__file__).absolute().parents[2] + +def main() -> int: + parser = argparse.ArgumentParser(description='Meson reference manual generator') + parser.add_argument('-l', '--loader', type=str, default='yaml', choices=['yaml'], help='Information loader backend') + parser.add_argument('-g', '--generator', type=str, choices=['print'], required=True, help='Generator backend') + parser.add_argument('--depfile', type=Path, default=None, help='Set to generate a depfile') + parser.add_argument('--force-color', action='store_true', help='Force enable colors') + args = parser.parse_args() + + if args.force_color: + mlog.colorize_console = lambda: True + + loaders: T.Dict[str, T.Callable[[], LoaderBase]] = { + 'yaml': lambda: LoaderYAML(meson_root / 'docs' / 'yaml'), + } + + loader = loaders[args.loader]() + refMan = loader.load() + + generators: T.Dict[str, T.Callable[[], GeneratorBase]] = { + 'print': lambda: GeneratorPrint(refMan), + } + generator = generators[args.generator]() + + # Generate the depfile if required + if args.depfile is not None: + assert isinstance(args.depfile, Path) + assert isinstance(args.out, Path) + + # Also add all files of this package + script_files = list(Path(__file__).resolve().parent.glob('**/*.py')) + templates = list(Path(__file__).resolve().parent.glob('**/*.mustache')) + + out_text = f'{args.out.resolve().as_posix()}: \\\n' + for input in loader.input_files + script_files + templates: + out_text += f' {input.resolve().as_posix():<93} \\\n' + + args.depfile.write_text(out_text, encoding='utf-8') + + generator.generate() + return 0 -- cgit v1.1 From 955a29a92d93b3aa09f49e5217be6c1304fc5fbe Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Sat, 21 Aug 2021 16:25:09 +0200 Subject: docs: Added pickle generator --- docs/refman/main.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'docs/refman/main.py') diff --git a/docs/refman/main.py b/docs/refman/main.py index 96698ae..34f2a3e 100644 --- a/docs/refman/main.py +++ b/docs/refman/main.py @@ -23,13 +23,15 @@ from .loaderyaml import LoaderYAML from .generatorbase import GeneratorBase from .generatorprint import GeneratorPrint +from .generatorpickle import GeneratorPickle meson_root = Path(__file__).absolute().parents[2] def main() -> int: parser = argparse.ArgumentParser(description='Meson reference manual generator') parser.add_argument('-l', '--loader', type=str, default='yaml', choices=['yaml'], help='Information loader backend') - parser.add_argument('-g', '--generator', type=str, choices=['print'], required=True, help='Generator backend') + parser.add_argument('-g', '--generator', type=str, choices=['print', 'pickle', 'md'], required=True, help='Generator backend') + parser.add_argument('-o', '--out', type=Path, required=True, help='Output directory for generated files') parser.add_argument('--depfile', type=Path, default=None, help='Set to generate a depfile') parser.add_argument('--force-color', action='store_true', help='Force enable colors') args = parser.parse_args() @@ -46,6 +48,7 @@ def main() -> int: generators: T.Dict[str, T.Callable[[], GeneratorBase]] = { 'print': lambda: GeneratorPrint(refMan), + 'pickle': lambda: GeneratorPickle(refMan, args.out), } generator = generators[args.generator]() -- cgit v1.1 From 476b93fd74ac8f7890ffb8d451de5ddc7be5f5c6 Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Sat, 21 Aug 2021 16:26:07 +0200 Subject: docs: Added Markdown generator --- docs/refman/main.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'docs/refman/main.py') diff --git a/docs/refman/main.py b/docs/refman/main.py index 34f2a3e..f4b3076 100644 --- a/docs/refman/main.py +++ b/docs/refman/main.py @@ -24,6 +24,7 @@ from .loaderyaml import LoaderYAML from .generatorbase import GeneratorBase from .generatorprint import GeneratorPrint from .generatorpickle import GeneratorPickle +from .generatormd import GeneratorMD meson_root = Path(__file__).absolute().parents[2] @@ -31,6 +32,7 @@ def main() -> int: parser = argparse.ArgumentParser(description='Meson reference manual generator') parser.add_argument('-l', '--loader', type=str, default='yaml', choices=['yaml'], help='Information loader backend') parser.add_argument('-g', '--generator', type=str, choices=['print', 'pickle', 'md'], required=True, help='Generator backend') + parser.add_argument('-s', '--sitemap', type=Path, default=meson_root / 'docs' / 'sitemap.txt', help='Path to the input sitemap.txt') parser.add_argument('-o', '--out', type=Path, required=True, help='Output directory for generated files') parser.add_argument('--depfile', type=Path, default=None, help='Set to generate a depfile') parser.add_argument('--force-color', action='store_true', help='Force enable colors') @@ -49,6 +51,7 @@ def main() -> int: generators: T.Dict[str, T.Callable[[], GeneratorBase]] = { 'print': lambda: GeneratorPrint(refMan), 'pickle': lambda: GeneratorPickle(refMan, args.out), + 'md': lambda: GeneratorMD(refMan, args.out, args.sitemap), } generator = generators[args.generator]() -- cgit v1.1 From 5dd8171fb3d226eaef52faa821286cf79d0f8a2a Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Sun, 22 Aug 2021 17:16:47 +0200 Subject: docs: Use a custom hotdoc extension for links to RefMan --- docs/refman/main.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'docs/refman/main.py') diff --git a/docs/refman/main.py b/docs/refman/main.py index f4b3076..cb040ce 100644 --- a/docs/refman/main.py +++ b/docs/refman/main.py @@ -34,6 +34,7 @@ def main() -> int: parser.add_argument('-g', '--generator', type=str, choices=['print', 'pickle', 'md'], required=True, help='Generator backend') parser.add_argument('-s', '--sitemap', type=Path, default=meson_root / 'docs' / 'sitemap.txt', help='Path to the input sitemap.txt') parser.add_argument('-o', '--out', type=Path, required=True, help='Output directory for generated files') + parser.add_argument('--link-defs', type=Path, help='Output file for the MD generator link definition file') parser.add_argument('--depfile', type=Path, default=None, help='Set to generate a depfile') parser.add_argument('--force-color', action='store_true', help='Force enable colors') args = parser.parse_args() @@ -51,7 +52,7 @@ def main() -> int: generators: T.Dict[str, T.Callable[[], GeneratorBase]] = { 'print': lambda: GeneratorPrint(refMan), 'pickle': lambda: GeneratorPickle(refMan, args.out), - 'md': lambda: GeneratorMD(refMan, args.out, args.sitemap), + 'md': lambda: GeneratorMD(refMan, args.out, args.sitemap, args.link_defs), } generator = generators[args.generator]() -- cgit v1.1