# -*- mode: python ; coding: utf-8 -*-
"""DokoGen — spec для PyInstaller.

Сборка:  py -m PyInstaller --clean --noconfirm dokogen.spec
Результат: dist/DokoGen.exe (один файл, запускается на любом Windows без Python).
"""
import sys
from PyInstaller.utils.hooks import collect_data_files, collect_submodules

# ---------- Данные приложения ----------
datas = [
    # Справочники (defense_tools.json, pd_actions.json, pd_items.json, pd_categories.json)
    ('dokogen/dictionaries', 'dokogen/dictionaries'),
    # Пустой опросник 152-ФЗ (для «Справка → Пустой опросник»)
    ('dokogen/data', 'dokogen/data'),
    # Иконка приложения (для окна программы в exe)
    ('dokogen/icon.ico', 'dokogen'),
]

# ---------- Словари pymorphy3 (обязательно!) ----------
# Без них склонение организаций/ФИО в exe не будет работать.
datas += collect_data_files('pymorphy3_dicts_ru')
datas += collect_data_files('pymorphy3')

# ---------- Скрытые импорты ----------
hiddenimports = collect_submodules('pymorphy3') + collect_submodules('pymorphy3_dicts_ru')
hiddenimports += [
    'lxml', 'lxml.etree', 'lxml._elementpath',
    'openpyxl', 'openpyxl.cell._writer',
]

a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    datas=datas,
    hiddenimports=hiddenimports,
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
)

pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name='DokoGen',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,          # GUI-приложение, без консоли
    disable_windowed_traceback=False,
    icon='dokogen/icon.ico',
)
