main: Update to use extension_data structure

Updated config and __main__ code to use the new wrapper format and pre-fetched
values.
This commit is contained in:
Thomas Adamcik 2015-05-11 22:47:13 +02:00
parent 8b6553ec16
commit dbc3100e9c
3 changed files with 19 additions and 24 deletions

View File

@ -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()

View File

@ -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

View File

@ -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)