config: Create read-only config proxy
This commit is contained in:
parent
9c536d3bbe
commit
375c20732e
@ -74,17 +74,20 @@ def main():
|
||||
log_extension_info(installed_extensions, enabled_extensions)
|
||||
check_config_errors(config_errors)
|
||||
|
||||
log.setup_log_levels(config)
|
||||
# Read-only config from here one please.
|
||||
proxied_config = config_lib.Proxy(config)
|
||||
|
||||
log.setup_log_levels(proxied_config)
|
||||
create_file_structures()
|
||||
check_old_locations()
|
||||
ext.register_gstreamer_elements(enabled_extensions)
|
||||
|
||||
# Anything that wants to exit after this point must use
|
||||
# mopidy.utils.process.exit_process as actors have been started.
|
||||
audio = setup_audio(config)
|
||||
backends = setup_backends(config, enabled_extensions, audio)
|
||||
audio = setup_audio(proxied_config)
|
||||
backends = setup_backends(proxied_config, enabled_extensions, audio)
|
||||
core = setup_core(audio, backends)
|
||||
setup_frontends(config, enabled_extensions, core)
|
||||
setup_frontends(proxied_config, enabled_extensions, core)
|
||||
loop.run()
|
||||
except KeyboardInterrupt:
|
||||
if logging_initialized:
|
||||
|
||||
@ -144,3 +144,23 @@ def parse_override(override):
|
||||
section, remainder = override.split('/', 1)
|
||||
key, value = remainder.split('=', 1)
|
||||
return (section.strip(), key.strip(), value.strip())
|
||||
|
||||
|
||||
class Proxy(collections.Mapping):
|
||||
def __init__(self, data):
|
||||
self._data = data
|
||||
|
||||
def __getitem__(self, key):
|
||||
item = self._data.__getitem__(key)
|
||||
if isinstance(item, dict):
|
||||
return Proxy(item)
|
||||
return item
|
||||
|
||||
def __iter__(self):
|
||||
return self._data.__iter__()
|
||||
|
||||
def __len__(self):
|
||||
return self._data.__len__()
|
||||
|
||||
def __repr__(self):
|
||||
return b'Proxy(%r)' % self._data
|
||||
|
||||
Loading…
Reference in New Issue
Block a user