From 57b588c6997f30ab233e25b153360c6ce966636a Mon Sep 17 00:00:00 2001 From: milde Date: Tue, 25 Jan 2022 16:39:07 +0000 Subject: docutils-cli: Use "SettingsSpec" interface for config file parsing. Use the high-level interface provided by docutils.core instead of the low-level classes/functions in docutils.frontend to get reader/parser/writer names from standard configuration files. git-svn-id: https://svn.code.sf.net/p/docutils/code/trunk@8965 929543f6-e4f2-0310-98a6-ba3bd3dd1d04 --- docutils/tools/docutils-cli.py | 111 ++++++++++++++++++++--------------------- 1 file changed, 53 insertions(+), 58 deletions(-) (limited to 'docutils/tools') diff --git a/docutils/tools/docutils-cli.py b/docutils/tools/docutils-cli.py index f79a5c060..dac39caab 100755 --- a/docutils/tools/docutils-cli.py +++ b/docutils/tools/docutils-cli.py @@ -25,71 +25,66 @@ except: import argparse import sys -from docutils.core import publish_cmdline, default_description -from docutils.frontend import ConfigParser, OptionParser - -config_section = 'docutils-cli application' - -def config_settings_from_files(): - """Return dict with default settings for the docutils-cli front end. - - Read default values for the three docutils-cli options from the - [docutils-cli application] section in standard configuration files. - - Command-line options are defined separately, using the "argparse" module - to allow two-stage parsing of the command line. - """ - settings = {'reader': 'standalone', - 'parser': 'rst', - 'writer': 'html5' - } - option_parser = OptionParser() - config_parser = ConfigParser() - config_files = option_parser.get_standard_config_files() - config_parser.read(config_files, option_parser) - settings.update(config_parser.get_section(config_section)) - return settings - -default_settings = config_settings_from_files() - -description = u'Generate documents from reStructuredText or Markdown sources.' - -epilog = (u'Further optional arguments are added by the selected ' - u'components, the list below adapts to your selection.' - ) - -parser = argparse.ArgumentParser(add_help=False, - description=description, epilog=epilog, - formatter_class=argparse.ArgumentDefaultsHelpFormatter) - -parser.add_argument('source', nargs='?') -parser.add_argument('destination', nargs='?') -parser.add_argument('--reader', help=u'reader name', - default=default_settings['reader']) -parser.add_argument('--parser', help=u'parser name', - default=default_settings['parser']) -parser.add_argument('--writer', help=u'writer name', - default=default_settings['writer']) - -(args, remainder) = parser.parse_known_args() - -# push back positional arguments -if args.destination: - remainder.insert(0, args.destination) -if args.source: - remainder.insert(0, args.source) +import docutils +from docutils.core import Publisher, publish_cmdline + +usage = '%(prog)s [options] [ []]' + +description = ('Convert plaintext documentation into useful formats.\n' + 'Reads from (default is stdin) ' + 'and writes to (default is stdout).') + +epilog = ('Further optional arguments depend on the selected components. ' + 'See ' + 'for the full reference. The list below adapts to your selection.') + + +class CliSettingsSpec(docutils.SettingsSpec): + """Additional runtime settings & command-line options for the CLI.""" + + settings_spec = ( + 'Docutils CLI Options', + None, + (# 'help text', [