# -*- mode: python ; coding: utf-8 -*-
import os

try:
    _SPEC_ROOT = os.path.dirname(os.path.abspath(SPEC))
except NameError:
    _SPEC_ROOT = os.getcwd()
_LOGO_ICO = os.path.normpath(os.path.join(_SPEC_ROOT, "logo.ico"))

# 无此文件时 PyInstaller 会用默认图标，看起来像「没换」——必须存在且为合法 .ico（文件头 00 00 01 00）
if not os.path.isfile(_LOGO_ICO):
    raise FileNotFoundError(
        "找不到图标文件: %s\n请将 logo.ico 放在与 build.spec 同一目录后重新打包。" % _LOGO_ICO
    )
_LOGO_ICO_ABS = os.path.abspath(_LOGO_ICO)
print("[build.spec] EXE icon path:", _LOGO_ICO_ABS)

block_cipher = None

_datas = [
    (os.path.join(os.getcwd(), 'layout'), 'layout'),
    (os.path.join(os.getcwd(), 'assets'), 'assets'),
    (_LOGO_ICO_ABS, "."),
]

a = Analysis(
    ['main.py'],
    pathex=[os.getcwd()],
    binaries=[],
    datas=_datas,
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)

pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='CursorTokenLogin',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    # UPX 压缩可能导致杀软误报或运行时无法加载 python3xx.dll，发布包建议关闭
    upx=False,
    upx_exclude=[],
    # onefile 解压目录：%LOCALAPPDATA%\CursorTokenLogin\runtime\_MEI*（PyInstaller 在 Windows 上会展开环境变量）
    runtime_tmpdir=r'%LOCALAPPDATA%\CursorTokenLogin\runtime',
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    # 必须用绝对路径；资源管理器若仍显示旧图标多半是 Windows 图标缓存，可改 exe 文件名或清 IconCache
    icon=_LOGO_ICO_ABS,
)

import sys
if sys.platform == 'darwin':
    app = BUNDLE(
        exe,
        name='CursorTokenLogin.app',
        icon='logo.png',
        bundle_identifier='com.yunzer.cursortokenlogin',
    )
