diff --git a/mopidy/config/__init__.py b/mopidy/config/__init__.py index 0d9b9e7a..e9ae7d86 100644 --- a/mopidy/config/__init__.py +++ b/mopidy/config/__init__.py @@ -5,6 +5,7 @@ import io import logging import os.path +from mopidy.config import keyring from mopidy.config.schemas import * # noqa from mopidy.config.types import * # noqa from mopidy.utils import path @@ -47,7 +48,7 @@ def load(files, extensions, overrides): config_dir = os.path.dirname(__file__) defaults = [read(os.path.join(config_dir, 'default.conf'))] defaults.extend(e.get_default_config() for e in extensions) - raw_config = _load(files, defaults, overrides) + raw_config = _load(files, defaults, keyring.fetch() + (overrides or [])) schemas = _schemas[:] schemas.extend(e.get_config_schema() for e in extensions) @@ -101,7 +102,7 @@ def _load(files, defaults, overrides): for section in parser.sections(): raw_config[section] = dict(parser.items(section)) - for section, key, value in overrides or []: + for section, key, value in overrides: raw_config.setdefault(section, {})[key] = value return raw_config diff --git a/mopidy/config/keyring.py b/mopidy/config/keyring.py index 29fccb43..757b9a24 100644 --- a/mopidy/config/keyring.py +++ b/mopidy/config/keyring.py @@ -22,19 +22,19 @@ else: def fetch(): if not dbus: logger.debug('Keyring lookup failed as D-Bus not installed.') - return None + return [] bus = _bus() if not _secrets_running(bus): logger.debug('Keyring lookup failed as Secrets service not running.') - return None + return [] service = _serivce(bus) session = service.OpenSession('plain', EMPTY_STRING)[1] items, locked = service.SearchItems({'service': 'mopidy'}) if not locked and not items: - return None + return [] if locked: # There is a chance we can unlock without prompting the users... @@ -42,15 +42,15 @@ def fetch(): if prompt != '/': _prompt(bus, prompt).Dismiss() logger.debug('Keyring lookup failed as it is locked.') - return None + return [] - config = {} + result = [] secrets = service.GetSecrets(items, session, byte_arrays=True) for item_path, values in secrets.iteritems(): session_path, parameters, value, content_type = values attrs = _item_attributes(bus, item_path) - config.setdefault(attrs['section'], {})[attrs['key']] = bytes(value) - return config + result.append((attrs['section'], attrs['key'], bytes(value))) + return result def set(section, key, value):