| 123456789101112131415161718192021222324252627282930313233343536 |
- import importlib
- from importlib import util
- import os
- from engine import log
- from engine.plugins.plugin import LoadablePlugin
- PLUGIN_DIR = '/etc/hometv/plugins'
- LOADED_PLUGINS = {}
- ENABLED_PLUGINS = {}
- def find_plugins():
- for package in os.listdir(PLUGIN_DIR):
- modules = _import(package, '__init__')
- for module in modules.__all__:
- _class = _import(package, module)
- if _class.__name__.endswith('plugin'):
- LOADED_PLUGINS[package] = _class
- def load_plugins(plugins):
- for plugin in plugins:
- if plugin in LOADED_PLUGINS:
- ENABLED_PLUGINS[plugin] = LoadablePlugin(LOADED_PLUGINS[plugin])
- def _import(package, module):
- spec = util.spec_from_file_location(
- '{}.{}'.format(package, module),
- '{}/{}/{}.py'.format(PLUGIN_DIR, package, module))
- load = util.module_from_spec(spec)
- spec.loader.exec_module(load)
- log.debug('Imported: {}.{}'.format(package, module))
- return load
|