Enabling --plugins filtering

This commit is contained in:
Anton Hvornum 2021-04-30 16:45:42 +02:00
parent 25b699b44e
commit 404197dc93
2 changed files with 21 additions and 8 deletions

View File

@ -14,7 +14,6 @@ from .lib.packages import *
from .lib.output import *
from .lib.storage import *
from .lib.hardware import *
from .lin.plugins import plugins
__version__ = "2.2.0"
@ -33,6 +32,9 @@ for arg in sys.argv[1:]:
else:
positionals.append(arg)
storage['arguments'] = arguments
from .lib.plugins import plugins
# TODO: Learn the dark arts of argparse...
# (I summon thee dark spawn of cPython)

View File

@ -1,13 +1,24 @@
import pkgutil
import importlib
import imp # Deprecated
from .storage import storage
plugins = {}
PLUGIN_PREFIXES = 'archinstall-'
for module_info in pkgutil.iter_modules(path=None, prefix=''):
if 'archinstall-' in module_info.name and module_info.ispkg:
try:
modulesource = importlib.import_module(module_info.name)
imp.reload(modulesource)
except Exception as e:
print('Could not load plugin {} {}'.format(modname, e))
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))