import os
import sys
import glob
import importlib

# Boards Vendors.

vendors = [
    "1bitsquared",
    "antmicro",
    "colorlight",
    "decklink",
    "digilent",
    "enclustra",
    "gsd",
    "hackaday",
    "kosagi",
    "lattice",
    "lambdaconcept",
    "linsn",
    "muselab",
    "numato",
    "qmtech",
    "qwertyembedded",
    "radiona",
    "rhsresearchllc",
    "saanlima",
    "scarabhardware",
    "siglent",
    "sipeed",
    "sqrl",
    "terasic",
    "trenz",
    "tul",
    "xilinx",
]

# Get all platforms/targets.
litex_boards_dir = os.path.dirname(os.path.realpath(__file__))
platforms        = glob.glob(f"{litex_boards_dir}/platforms/*.py")
targets          = glob.glob(f"{litex_boards_dir}/targets/*.py")

# For each platform:
for platform in platforms:
    platform = os.path.basename(platform)
    platform = platform.replace(".py", "")
    # Verify if a Vendor prefix is present in platform name, if so create the short import to
    # allow the platform to be imported with the full name or short name ex:
    # from litex_boards.platforms import digilent_arty or
    # from litex_boards.platforms import arty
    if platform.split("_")[0] in vendors:
        short_platform = platform[len(platform.split("_")[0])+1:]
        p = importlib.import_module(f"litex_boards.platforms.{platform}")
        vars()[short_platform] = p
        sys.modules[f"litex_boards.platforms.{short_platform}"] = p

# For each target:
for target in targets:
    target = os.path.basename(target)
    target = target.replace(".py", "")
    # Verify if a Vendor prefix is present in target name, if so create the short import to
    # allow the target to be imported with the full name or short name ex:
    # from litex_boards.targets import digilent_arty or
    # from litex_boards.targets import arty
    if target.split("_")[0] in vendors:
        try:
            short_target = target[len(target.split("_")[0])+1:]
            t = importlib.import_module(f"litex_boards.targets.{target}")
            vars()[short_target] = t
            sys.modules[f"litex_boards.targets.{short_target}"] = t
        except ModuleNotFoundError:
            # Not all dependencies for this target is satisfied. Skip.
            pass