from pathlib import Path

PLUGIN_DIR = Path(__file__).parent


def discover_plugins():
    from engine.effects.registry import get_registry
    from engine.effects.types import EffectPlugin

    registry = get_registry()
    imported = {}

    for file_path in PLUGIN_DIR.glob("*.py"):
        if file_path.name.startswith("_"):
            continue
        module_name = file_path.stem
        if module_name in ("base", "types"):
            continue

        try:
            module = __import__(f"engine.effects.plugins.{module_name}", fromlist=[""])
            for attr_name in dir(module):
                attr = getattr(module, attr_name)
                if (
                    isinstance(attr, type)
                    and issubclass(attr, EffectPlugin)
                    and attr is not EffectPlugin
                    and attr_name.endswith("Effect")
                ):
                    plugin = attr()
                    if not isinstance(plugin, EffectPlugin):
                        continue
                    registry.register(plugin)
                    imported[plugin.name] = plugin
        except Exception:
            pass

    return imported
