[cli] Fix exporting of plugin interfaces

Signed-off-by: Ferdinand Thiessen <rpm@fthiessen.de>
This commit is contained in:
Ferdinand Thiessen 2022-07-31 19:06:55 +02:00
parent fa503fe142
commit 2880076705
1 changed files with 12 additions and 4 deletions

View File

@ -1,4 +1,5 @@
import click import click
from importlib_metadata import entry_points
@click.command() @click.command()
@ -8,14 +9,21 @@ import click
@click.option("--no-core", help="Skip models / types from flaschengeist core", is_flag=True) @click.option("--no-core", help="Skip models / types from flaschengeist core", is_flag=True)
def export(namespace, output, no_core, plugin): def export(namespace, output, no_core, plugin):
from flaschengeist import logger, models from flaschengeist import logger, models
from flaschengeist.app import get_plugins
from .InterfaceGenerator import InterfaceGenerator from .InterfaceGenerator import InterfaceGenerator
gen = InterfaceGenerator(namespace, output, logger) gen = InterfaceGenerator(namespace, output, logger)
if not no_core: if not no_core:
gen.run(models) gen.run(models)
if plugin: if plugin:
for plugin_class in get_plugins(): for entry_point in entry_points(group="flaschengeist.plugins"):
if (len(plugin) == 0 or plugin_class.id in plugin) and plugin_class.models is not None: if len(plugin) == 0 or entry_point.name in plugin:
gen.run(plugin_class.models) try:
plugin = entry_point.load()
gen.run(plugin.models)
except:
logger.error(
f"Plugin {entry_point.name} could not be loaded due to an error.",
exc_info=True,
)
continue
gen.write() gen.write()