# -*- mode: python -*-
import os, glob, importlib
from PyInstaller.utils.hooks import (
    collect_data_files,
    collect_dynamic_libs,
    collect_submodules,
)

block_cipher = None

# 1) ImGui assets (fonts, shaders, etc.)
datas = collect_data_files('imgui_bundle', include_py_files=False)

# 2) Native libs for hidapi + the ImGui C‐extension
binaries = []
# • hidapi → also picks up hidapi.dll if that wrapper is used
binaries += collect_dynamic_libs('hidapi')
# • imgui_bundle → picks up _imgui_bundle*.pyd
binaries += collect_dynamic_libs('imgui_bundle')

# As a safety-net, glob any .pyd for imgui_bundle
try:
    pkg = importlib.import_module('imgui_bundle')
    pkg_dir = os.path.dirname(pkg.__file__)
    for pyd in glob.glob(os.path.join(pkg_dir, '_imgui_bundle*.pyd')):
        binaries.append((pyd, '.'))
except ImportError:
    pass

# 3) Pull in all Python modules for hidapi and imgui_bundle
hiddenimports = []
hiddenimports += collect_submodules('hidapi')
hiddenimports += collect_submodules('imgui_bundle')

a = Analysis(
    ['calibrate_diode.py'],
    pathex=['.'],
    binaries=binaries,
    datas=datas,
    hiddenimports=hiddenimports,
    hookspath=[],
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
)

pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    [],                  # no in-EXE binaries
    exclude_binaries=True,
    name='calibrate_diode',
    debug=False,
    strip=False,
    upx=True,
    console=True,        # False → GUI only
)

coll = COLLECT(
    exe,
    a.binaries,          # contains hidapi.dll, other wrappers, _imgui_bundle.pyd
    a.zipfiles,
    a.datas,             # imgui_bundle/assets
    strip=False,
    upx=True,
    name='calibrate_diode',
)
