# -*- mode: python ; coding: utf-8 -*-
from PyInstaller.utils.hooks import collect_all

# - get version from version file
import os
import sys
import platform
sys.path.insert(0, os.path.abspath('.'))
from version import APP_NAME, APP_VERSION, APP_AUTHOR

APP_NAME = APP_NAME + " Server"
datas = [('resources', 'resources'), ('src/engines/blender/scripts/', 'src/engines/blender/scripts')]
binaries = []
hiddenimports = ['zeroconf']
tmp_ret = collect_all('zeroconf')
datas += tmp_ret[0]; binaries += tmp_ret[1]; hiddenimports += tmp_ret[2]


a = Analysis(
    ['server.py'],
    pathex=[],
    binaries=binaries,
    datas=datas,
    hiddenimports=hiddenimports,
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=1,  # fyi: optim level 2 breaks on windows
)
pyz = PYZ(a.pure)

if platform.system() == 'Windows':

    import pyinstaller_versionfile
    import tempfile

    version_file_path = os.path.join(tempfile.gettempdir(), 'versionfile.txt')

    pyinstaller_versionfile.create_versionfile(
        output_file=version_file_path,
        version=APP_VERSION,
        company_name=APP_AUTHOR,
        file_description=APP_NAME,
        internal_name=APP_NAME,
        legal_copyright=f"© {APP_AUTHOR}",
        original_filename=f"{APP_NAME}.exe",
        product_name=APP_NAME
    )

    exe = EXE(
        pyz,
        a.scripts,
        a.binaries,
        a.datas,
        [],
        name=APP_NAME,
        debug=False,
        bootloader_ignore_signals=False,
        strip=True,
        upx=True,
        console=True,
        disable_windowed_traceback=False,
        argv_emulation=False,
        target_arch=None,
        codesign_identity=None,
        entitlements_file=None,
        version=version_file_path
    )

else:  # linux / macOS
    exe = EXE(
        pyz,
        a.scripts,
        a.binaries,
        a.datas,
        [],
        name=APP_NAME,
        debug=False,
        bootloader_ignore_signals=False,
        strip=True,
        upx=True,
        console=False,
        disable_windowed_traceback=False,
        argv_emulation=False,
        target_arch=None,
        codesign_identity=None,
        entitlements_file=None
    )
