# -*- mode: python ; coding: utf-8 -*- # vi: ft=python from argparse import ArgumentParser import sys from PyInstaller.building.api import COLLECT, EXE, PYZ from PyInstaller.building.build_main import Analysis from PyInstaller.building.osx import BUNDLE parser = ArgumentParser() parser.add_argument('--portable', action='store_true') options = parser.parse_args() name = 'TagStudio' if sys.platform == 'win32' else 'tagstudio' icon = None if sys.platform == 'win32': icon = 'tagstudio/resources/icon.ico' elif sys.platform == 'darwin': icon = 'tagstudio/resources/icon.icns' a = Analysis( ['tagstudio/tag_studio.py'], pathex=[], binaries=[], datas=[('tagstudio/resources', 'resources'), ('tagstudio/src', 'src')], hiddenimports=[], hookspath=[], hooksconfig={}, excludes=[], runtime_hooks=[], noarchive=False, optimize=0, ) pyz = PYZ(a.pure) include = [a.scripts] if options.portable: include += (a.binaries, a.datas) exe = EXE( pyz, *include, [], bootloader_ignore_signals=False, console=False, hide_console='hide-early', disable_windowed_traceback=False, debug=False, name=name, exclude_binaries=not options.portable, icon=icon, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None ) coll = None if options.portable else COLLECT( exe, a.binaries, a.datas, name=name, strip=False, upx=True, upx_exclude=[], ) app = BUNDLE( exe if coll is None else coll, name='TagStudio.app', icon=icon, bundle_identifier='com.github.tagstudiodev', version='0.0.0', info_plist={ 'NSAppleScriptEnabled': False, 'NSPrincipalClass': 'NSApplication', } )