diff options
author | goodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2006-11-06 20:25:50 +0000 |
---|---|---|
committer | goodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2006-11-06 20:25:50 +0000 |
commit | f5682e3e7f5f3ca6da1450680e3edc7882a66c09 (patch) | |
tree | 6ac581224bc21d96f8de7b4e46de313dc3e5cdd4 | |
parent | 82b3c03a8fab8130084a6fff7eb58d012c4bc007 (diff) | |
download | docutils-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.txt | 3 | ||||
-rw-r--r-- | docs/user/config.txt | 5 | ||||
-rw-r--r-- | docutils/frontend.py | 20 |
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) |