test-kivy-app/kivy_venv/lib/python3.11/site-packages/docutils/__main__.py
2024-09-15 15:12:16 +03:00

97 lines
3.5 KiB
Python
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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()