From dbc3100e9cfa994fb8a87570c089d08f298b1999 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Mon, 11 May 2015 22:47:13 +0200 Subject: [PATCH] main: Update to use extension_data structure Updated config and __main__ code to use the new wrapper format and pre-fetched values. --- mopidy/__main__.py | 25 ++++++++++++------------- mopidy/commands.py | 4 ++-- mopidy/config/__init__.py | 14 +++++--------- 3 files changed, 19 insertions(+), 24 deletions(-) diff --git a/mopidy/__main__.py b/mopidy/__main__.py index 69ba5370..9e1e1c94 100644 --- a/mopidy/__main__.py +++ b/mopidy/__main__.py @@ -66,21 +66,22 @@ def main(): root_cmd.add_child('config', config_cmd) root_cmd.add_child('deps', deps_cmd) - installed_extensions = ext.load_extensions() + extensions_data = ext.load_extensions() - for data in installed_extensions: - if data.command: + for data in extensions_data: + if data.command: # TODO: check isinstance? data.command.set(extension=data.command) root_cmd.add_child(data.extension.ext_name, data.command) args = root_cmd.parse(mopidy_args) - create_file_structures_and_config(args, installed_extensions) + create_file_structures_and_config(args, extensions_data) check_old_locations() - # TODO: make config.load use extension data? or just pass in schema+def config, config_errors = config_lib.load( - args.config_files, [d.extension for d in installed_extensions], + args.config_files, + [d.config_schema for d in extensions_data], + [d.config_defaults for d in extensions_data], args.config_overrides) verbosity_level = args.base_verbosity_level @@ -91,7 +92,7 @@ def main(): extensions = { 'validate': [], 'config': [], 'disabled': [], 'enabled': []} - for data in installed_extensions: + for data in extensions_data: extension = data.extension # TODO: factor out all of this to a helper that can be tested @@ -113,15 +114,13 @@ def main(): else: extensions['enabled'].append(extension) - # TODO: convert rest of code to use new ExtensionData - installed_extensions = [d.extension for d in installed_extensions] - - log_extension_info(installed_extensions, extensions['enabled']) + log_extension_info([d.extension for d in extensions_data], + extensions['enabled']) # Config and deps commands are simply special cased for now. if args.command == config_cmd: - return args.command.run( - config, config_errors, installed_extensions) + schemas = [d.config_schema for d in extensions_data] + return args.command.run(config, config_errors, schemas) elif args.command == deps_cmd: return args.command.run() diff --git a/mopidy/commands.py b/mopidy/commands.py index 29564779..24acfb7d 100644 --- a/mopidy/commands.py +++ b/mopidy/commands.py @@ -415,8 +415,8 @@ class ConfigCommand(Command): super(ConfigCommand, self).__init__() self.set(base_verbosity_level=-1) - def run(self, config, errors, extensions): - print(config_lib.format(config, extensions, errors)) + def run(self, config, errors, schemas): + print(config_lib.format(config, schemas, errors)) return 0 diff --git a/mopidy/config/__init__.py b/mopidy/config/__init__.py index fc6dcb60..3f1f978c 100644 --- a/mopidy/config/__init__.py +++ b/mopidy/config/__init__.py @@ -65,24 +65,20 @@ def read(config_file): return filehandle.read() -def load(files, extensions, overrides): - # Helper to get configs, as the rest of our config system should not need - # to know about extensions. +def load(files, ext_schemas, ext_defaults, 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) + defaults.extend(ext_defaults) raw_config = _load(files, defaults, keyring.fetch() + (overrides or [])) schemas = _schemas[:] - schemas.extend(e.get_config_schema() for e in extensions) + schemas.extend(ext_schemas) return _validate(raw_config, schemas) -def format(config, extensions, comments=None, display=True): - # Helper to format configs, as the rest of our config system should not - # need to know about extensions. +def format(config, ext_schemas, comments=None, display=True): schemas = _schemas[:] - schemas.extend(e.get_config_schema() for e in extensions) + schemas.extend(ext_schemas) return _format(config, comments or {}, schemas, display, False)