Skip to content
Snippets Groups Projects
agkyra.spec 1.94 KiB
Newer Older
# -*- mode: python -*-
import glob
import os
import sys

def iswin():
    return sys.platform.startswith("win")

def isosx():
    return sys.platform.startswith("darwin")

HERE = os.getcwd()

a = Analysis(['agkyra/scripts/agkyra'],
             pathex=[HERE],
             hiddenimports=[],
             hookspath=None,
             runtime_hooks=None)

def extra_datas(prefix, path):
    def recursive_glob(path, files):
        for file_path in glob.glob(path):
            if os.path.isfile(file_path):
                files.append(os.path.join(prefix, file_path))
            recursive_glob('{}/*'.format(file_path), files)

    files = []
    extra_datas = []

    full_path = os.path.join(prefix, path)
    if os.path.isfile(full_path):
        files.append(full_path)
    else:
        recursive_glob('{}/*'.format(full_path), files)

    for f in files:
        extra_datas.append((f.split(prefix)[1][1:], f, 'DATA'))
    return extra_datas

a.datas += extra_datas(os.path.join(HERE, 'agkyra'), os.path.join('resources', 'nwjs'))
a.datas += extra_datas(os.path.join(HERE, 'agkyra'), os.path.join('resources', 'nwgui'))
a.datas += extra_datas(os.path.join(HERE, 'agkyra'), os.path.join('resources', 'ui_data'))
a.datas += extra_datas(os.path.join(HERE, 'agkyra'), os.path.join('resources', 'cacert.pem'))

pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='agkyra.exe' if iswin() else 'agkyra',
          debug=False,
          strip=None,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=None,
               upx=True,
               name='agkyra')
if isosx():
    app = BUNDLE(coll,
                 name='agkyra.app',
                 icon=None)
    import shutil
    shutil.copy2('agkyra/resources/nwgui/static/images/logo.icns',
                 'dist/agkyra.app/Contents/Resources/icon-windowed.icns')