Implemented main basically
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2021-04-14 17:41:48 +02:00
parent f8bd18c307
commit 97986d78e5
8 changed files with 152 additions and 44 deletions

View File

@@ -3,7 +3,11 @@ from plugins import AbstractPlugin, AbstractCommandCompiler
import logging
class ConflictingPlugins(BaseException):
class ConflictingPlugins(Exception):
pass
class UnknownPlugin(Exception):
pass
@@ -19,14 +23,25 @@ class PluginRepository:
self._registered_plugins[plugin_class.plugin_name] = plugin_class
self._logger.debug(f"Registered plugin: {plugin_class.plugin_name}")
def load_plugins(self, plugins: List[str]):
for plugin in plugins:
self.load_plugin(plugin)
def load_plugin(self, plugin: str):
self._logger.debug(f"Loading plugin: {plugin}")
if plugin in self._loaded_plugins.keys():
self._logger.warning(f"Plugin {plugin} already loaded!")
return
# create instance
plugin_instance = self._registered_plugins[plugin]() # config is statically loaded
# lookup plugin class
try:
plugin_cls = self._registered_plugins[plugin]
except KeyError:
raise UnknownPlugin(f"Tried to load unknown plugin: {plugin}")
# Create instance
plugin_instance = plugin_cls() # config is statically loaded
# load compilers
compilers = plugin_instance.load_compilers()