import importlib.util as importlib
from osdk.logger import Logger
from osdk.shell import readdir

logger = Logger("plugins")


def load(path: str):
    logger.log(f"Loading plugin {path}")
    spec = importlib.spec_from_file_location("plugin", path)

    if not spec or not spec.loader:
        logger.error(f"Failed to load plugin {path}")
        return None

    module = importlib.module_from_spec(spec)
    spec.loader.exec_module(module)


def loadAll():
    logger.log("Loading plugins...")
    for files in readdir("meta/plugins"):
        if files.endswith(".py"):
            plugin = load(f"meta/plugins/{files}")

            if plugin:
                print(f"Loaded plugin {plugin.name}")
                plugin.init()