summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgoodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2006-11-06 20:25:50 +0000
committergoodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2006-11-06 20:25:50 +0000
commitf5682e3e7f5f3ca6da1450680e3edc7882a66c09 (patch)
tree6ac581224bc21d96f8de7b4e46de313dc3e5cdd4
parent82b3c03a8fab8130084a6fff7eb58d012c4bc007 (diff)
downloaddocutils-f5682e3e7f5f3ca6da1450680e3edc7882a66c09.tar.gz
record paths of applied configuration files in _config_files runtime setting
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk/docutils@4798 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-rw-r--r--HISTORY.txt3
-rw-r--r--docs/user/config.txt5
-rw-r--r--docutils/frontend.py20
3 files changed, 26 insertions, 2 deletions
diff --git a/HISTORY.txt b/HISTORY.txt
index 7358f487e..5858db8c5 100644
--- a/HISTORY.txt
+++ b/HISTORY.txt
@@ -21,6 +21,9 @@ Changes Since 0.4
- Configuration files are now assumed and required to be
UTF-8-encoded.
+ - Paths of applied configuration files are now recorded in the
+ runtime setting ``_config_files`` (accessible via
+ ``--dump-settings``).
* docutils/io.py:
diff --git a/docs/user/config.txt b/docs/user/config.txt
index af009e6f1..801097200 100644
--- a/docs/user/config.txt
+++ b/docs/user/config.txt
@@ -1305,6 +1305,11 @@ These settings are for internal use only; setting them in
configuration files has no effect, and there are no corresponding
command-line options.
+_`_config_files`
+ List of paths of applied configuration files.
+
+ Default: None. No command-line options.
+
_`_directories`
(``buildhtml.py`` front end.) List of paths to source
directories, set from positional arguments.
diff --git a/docutils/frontend.py b/docutils/frontend.py
index c154ea5e0..01b345dd0 100644
--- a/docutils/frontend.py
+++ b/docutils/frontend.py
@@ -445,7 +445,8 @@ class OptionParser(optparse.OptionParser, docutils.SettingsSpec):
settings_defaults = {'_disable_config': None,
'_source': None,
- '_destination': None,}
+ '_destination': None,
+ '_config_files': None}
"""Defaults for settings that don't have command-line option equivalents."""
relative_path_settings = ('warning_stream',)
@@ -467,6 +468,9 @@ class OptionParser(optparse.OptionParser, docutils.SettingsSpec):
self.lists = {}
"""Set of list-type settings."""
+ self.config_files = []
+ """List of paths of applied configuration files."""
+
optparse.OptionParser.__init__(
self, option_class=Option, add_help_option=None,
formatter=optparse.TitledHelpFormatter(width=78),
@@ -546,6 +550,7 @@ class OptionParser(optparse.OptionParser, docutils.SettingsSpec):
"""Returns a dictionary containing appropriate config file settings."""
parser = ConfigParser()
parser.read(config_file, self)
+ self.config_files.extend(parser._files)
base_path = os.path.dirname(config_file)
applied = {}
settings = Values()
@@ -567,6 +572,7 @@ class OptionParser(optparse.OptionParser, docutils.SettingsSpec):
values._source, values._destination = self.check_args(args)
make_paths_absolute(values.__dict__, self.relative_path_settings,
os.getcwd())
+ values._config_files = self.config_files
return values
def check_args(self, args):
@@ -591,7 +597,9 @@ class OptionParser(optparse.OptionParser, docutils.SettingsSpec):
def get_default_values(self):
"""Needed to get custom `Values` instances."""
- return Values(self.defaults)
+ defaults = Values(self.defaults)
+ defaults._config_files = self.config_files
+ return defaults
def get_option_by_dest(self, dest):
"""
@@ -631,6 +639,12 @@ Unable to read configuration file "%s": content not encoded as UTF-8.
Skipping "%s" configuration file.
"""
+ def __init__(self, *args, **kwargs):
+ CP.ConfigParser.__init__(self, *args, **kwargs)
+
+ self._files = []
+ """List of paths of configuration files read."""
+
def read(self, filenames, option_parser):
if type(filenames) in (types.StringType, types.UnicodeType):
filenames = [filenames]
@@ -644,8 +658,10 @@ Skipping "%s" configuration file.
CP.ConfigParser.readfp(self, fp, filename)
except UnicodeDecodeError:
sys.stderr.write(self.not_utf8_error % (filename, filename))
+ fp.close()
continue
fp.close()
+ self._files.append(filename)
if self.has_section('options'):
self.handle_old_config(filename)
self.validate_settings(filename, option_parser)