Switched plugin strategty. Now uses built-in entrypoints to source and load the plugins. This is the default method provided by Python, and is the cleanest so far I think.
This commit is contained in:
parent
9b0de26c67
commit
2ee88e0e3a
|
|
@ -1,24 +1,10 @@
|
|||
import pkgutil
|
||||
import importlib
|
||||
import imp # Deprecated
|
||||
from .storage import storage
|
||||
from importlib import metadata
|
||||
|
||||
plugins = {}
|
||||
PLUGIN_PREFIXES = 'archinstall-'
|
||||
|
||||
if (plugin_list := storage.get('plugins', None)):
|
||||
if type(plugin_list) == str and plugin_list != '*':
|
||||
plugin_list = plugin_list.split(',')
|
||||
|
||||
for module_info in pkgutil.iter_modules(path=None, prefix=''):
|
||||
if not module_info.ispkg:
|
||||
continue
|
||||
|
||||
# If --plugins=* and <iterator:plugin> == 'archinstall-'
|
||||
# of --plugins=name is <iterator:plugin>
|
||||
if (plugin_list == '*' and PLUGIN_PREFIXES in module_info.name) or (module_info.name in plugin_list):
|
||||
try:
|
||||
modulesource = importlib.import_module(module_info.name)
|
||||
imp.reload(modulesource)
|
||||
except Exception as e:
|
||||
print('Could not load plugin {} {}'.format(modname, e))
|
||||
# 1: List archinstall.plugin definitions
|
||||
# 2: Loade the plugin entry point
|
||||
# 3: Initiate the plugin and store it as .name in plugins
|
||||
for plugin_definition in metadata.entry_points()['archinstall.plugin']:
|
||||
plugin_entrypoint = plugin_definition.load()
|
||||
plugins[plugin_definition.name] = plugin_entrypoint()
|
||||
Loading…
Reference in New Issue