diff options
Diffstat (limited to '.venv/lib/python3.12/site-packages/docutils/__main__.py')
-rwxr-xr-x | .venv/lib/python3.12/site-packages/docutils/__main__.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/docutils/__main__.py b/.venv/lib/python3.12/site-packages/docutils/__main__.py new file mode 100755 index 00000000..ce614891 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/docutils/__main__.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +# :Copyright: © 2020, 2022 Günter Milde. +# :License: Released under the terms of the `2-Clause BSD license`_, in short: +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. +# This file is offered as-is, without any warranty. +# +# .. _2-Clause BSD license: https://opensource.org/licenses/BSD-2-Clause +# +# Revision: $Revision: 9107 $ +# Date: $Date: 2022-07-06 15:59:57 +0200 (Mi, 06. Jul 2022) $ + +"""Generic command line interface for the `docutils` package. + +See also +https://docs.python.org/3/library/__main__.html#main-py-in-python-packages +""" + +import argparse +import locale +import sys + +import docutils +from docutils.core import Publisher, publish_cmdline, default_description + + +class CliSettingsSpec(docutils.SettingsSpec): + """Runtime settings & command-line options for the generic CLI. + + Configurable reader, parser, and writer components. + + The "--writer" default will change to 'html' in Docutils 2.0 + when 'html' becomes an alias for the current value 'html5'. + """ + + settings_spec = ( + 'Docutils Application Options', + 'Reader, writer, and parser settings influence the available options. ' + ' Example: use `--help --writer=latex` to see LaTeX writer options. ', + # options: ('help text', [<option strings>], {<keyword arguments>}) + (('Reader name (currently: "%default").', + ['--reader'], {'default': 'standalone', 'metavar': '<reader>'}), + ('Parser name (currently: "%default").', + ['--parser'], {'default': 'rst', 'metavar': '<parser>'}), + ('Writer name (currently: "%default").', + ['--writer'], {'default': 'html5', 'metavar': '<writer>'}), + ) + ) + config_section = 'docutils application' + config_section_dependencies = ('docutils-cli application', # back-compat + 'applications') + + +def main(): + """Generic command line interface for the Docutils Publisher. + """ + locale.setlocale(locale.LC_ALL, '') + + description = ('Convert documents into useful formats. ' + + default_description) + + # Update component selection from config file(s) + components = Publisher().get_settings(settings_spec=CliSettingsSpec) + + # Update component selection from command-line + argparser = argparse.ArgumentParser(add_help=False, allow_abbrev=False) + argparser.add_argument('--reader', default=components.reader) + argparser.add_argument('--parser', default=components.parser) + argparser.add_argument('--writer', default=components.writer) + # other options are parsed in a second pass via `publish_cmdline()` + (args, remainder) = argparser.parse_known_args() + # Ensure the current component selections are shown in help: + CliSettingsSpec.settings_default_overrides = args.__dict__ + + try: + publish_cmdline(reader_name=args.reader, + parser_name=args.parser, + writer_name=args.writer, + settings_spec=CliSettingsSpec, + description=description, + argv=remainder) + except ImportError as error: + print('%s.' % error, file=sys.stderr) + if '--traceback' in remainder: + raise + else: + print('Use "--traceback" to show details.') + + +if __name__ == '__main__': + if sys.argv[0].endswith('__main__.py'): + # fix "usage" message + sys.argv[0] = '%s -m docutils' % sys.executable + main() |