From 992b2931744082b22aa4abb8bd420852a63685da Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Mon, 15 Apr 2013 23:03:40 +0200 Subject: [PATCH] ext: Switch to validate_extension(extension, config) --- mopidy/__main__.py | 12 +++++----- mopidy/ext.py | 56 +++++++++++++++++++++------------------------- 2 files changed, 30 insertions(+), 38 deletions(-) diff --git a/mopidy/__main__.py b/mopidy/__main__.py index 1a134cc5..ca99238a 100644 --- a/mopidy/__main__.py +++ b/mopidy/__main__.py @@ -56,27 +56,24 @@ def main(): logging_config, options.verbosity_level, options.save_debug_log) installed_extensions = ext.load_extensions() - all_extensions = ext.validate_extensions(installed_extensions) # TODO: wrap config in RO proxy. config, config_errors = get_config( - config_files, all_extensions, config_overrides) + config_files, installed_extensions, config_overrides) # Filter out disabled extensions and remove any config errors for them. - # TODO: extension.should_install(config) - for extension in all_extensions: - if config[extension.ext_name]['enabled']: + for extension in installed_extensions: + if ext.validate_extension(extension, config): enabled_extensions.append(extension) elif extension.ext_name in config_errors: del config_errors[extension.ext_name] - log_extension_info(all_extensions, enabled_extensions) + log_extension_info(installed_extensions, enabled_extensions) check_config_errors(config_errors) log.setup_log_levels(config) create_file_structures() check_old_locations() - ext.register_gstreamer_elements(enabled_extensions) # Anything that wants to exit after this point must use @@ -99,6 +96,7 @@ def main(): process.stop_remaining_actors() +# TODO: move to config def get_config(files, extensions, overrides): # Helper to get configs, as our config system should not need to know about # extensions. diff --git a/mopidy/ext.py b/mopidy/ext.py index 8a8a1beb..4b3252da 100644 --- a/mopidy/ext.py +++ b/mopidy/ext.py @@ -112,45 +112,39 @@ def load_extensions(): return installed_extensions -def validate_extensions(installed_extensions): +def validate_extension(extension, config): """Verify extension's dependencies and environment. - :param installed_extensions: list of installed extensions - :returns: list of valid extensions + :param extensions: and extension to check + :param config: config to check enabled status in + :returns: if extensions should be run """ - valid_extensions = [] + logger.debug('Validating extension: %s', extension.ext_name) - for extension in installed_extensions: - logger.debug('Validating extension: %s', extension.ext_name) + if extension.ext_name != extension.entry_point.name: + logger.warning( + 'Disabled extension %(ep)s: entry point name (%(ep)s) ' + 'does not match extension name (%(ext)s)', + {'ep': extension.entry_point.name, 'ext': extension.ext_name}) + return False - if extension.ext_name != extension.entry_point.name: - logger.warning( - 'Disabled extension %(ep)s: entry point name (%(ep)s) ' - 'does not match extension name (%(ext)s)', - {'ep': extension.entry_point.name, 'ext': extension.ext_name}) - continue + try: + extension.entry_point.require() + except pkg_resources.DistributionNotFound as ex: + logger.info( + 'Disabled extension %s: Dependency %s not found', + extension.ext_name, ex) + return False - try: - extension.entry_point.require() - except pkg_resources.DistributionNotFound as ex: - logger.info( - 'Disabled extension %s: Dependency %s not found', - extension.ext_name, ex) - continue + try: + extension.validate_environment() + except exceptions.ExtensionError as ex: + logger.info( + 'Disabled extension %s: %s', extension.ext_name, ex.message) + return False - try: - extension.validate_environment() - except exceptions.ExtensionError as ex: - logger.info( - 'Disabled extension %s: %s', extension.ext_name, ex.message) - continue - - valid_extensions.append(extension) - - names = (e.ext_name for e in valid_extensions) - logger.debug('Valid extensions: %s', ', '.join(names)) - return valid_extensions + return config[extension.ext_name]['enabled'] def register_gstreamer_elements(enabled_extensions):