#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
This is a setup.py script generated by py2applet

Usage:
    python setup.py py2app
"""

from setuptools import setup
import os
from os.path import exists, isdir, join
import platform
import re
import shutil
import sys

if sys.platform=='win32':
    assert platform.architecture()[0]=='32bit', 'Assumes a Python built for 32bit'
    import py2exe
    dist_dir = 'dist.win32'
elif sys.platform=='darwin':
    dist_dir = 'dist.macosx'
else:
    assert False, 'Unsupported platform %s' % sys.platform

if dist_dir and len(dist_dir)>1 and isdir(dist_dir):
    shutil.rmtree(dist_dir)

# "Developer ID Application" name for signing
macdeveloperid = None


# Patch py2app recipe enumerator to skip the sip recipe since it's too enthusiastic - we'll list additional Qt modules explicitly
if sys.platform=='darwin':
    from py2app import recipes
    import py2app.build_app
    def iterRecipes(module=recipes):
        for name in dir(module):
            if name.startswith('_') or name=='sip':
                continue
            check = getattr(getattr(module, name), 'check', None)
            if check is not None:
                yield (name, check)
    py2app.build_app.iterRecipes = iterRecipes


APP = 'EDMarketConnector.py'
APPNAME = re.search(r"^appname\s*=\s*'(.+)'", file('config.py').read(), re.MULTILINE).group(1)
APPLONGNAME = re.search(r"^applongname\s*=\s*'(.+)'", file('config.py').read(), re.MULTILINE).group(1)
VERSION = re.search(r"^appversion\s*=\s*'(.+)'", file('config.py').read(), re.MULTILINE).group(1)
SHORTVERSION = ''.join(VERSION.split('.')[:3])

PY2APP_OPTIONS = {'dist_dir': dist_dir,
                  'optimize': 2,
                  'packages': [ 'requests' ],
                  'iconfile': '%s.icns' % APPNAME,
                  'semi_standalone': True,
                  'site_packages': False,
                  'plist': {
                      'CFBundleName': APPNAME,
                      'CFBundleIdentifier': 'uk.org.marginal.%s' % APPNAME.lower(),
                      'CFBundleShortVersionString': VERSION,
                      'CFBundleVersion':  VERSION,
                      'LSMinimumSystemVersion': '.'.join(platform.mac_ver()[0].split('.')[:2]),	# minimum version = build version
                      'NSHumanReadableCopyright': u'© 2015 Jonathan Harris',
                  },
                  'graph': True,	# output dependency graph in dist
              }

PY2EXE_OPTIONS = {'dist_dir': dist_dir,
                  'optimize': 2,
                  'packages': [ 'requests' ],
              }

if sys.platform=='win32':
    import requests
    DATA_FILES = [ ('', [requests.certs.where(),
                         '%s.ico' % APPNAME ] ) ]
else:
    DATA_FILES = [ ]

setup(
    name = APPLONGNAME,
    version = VERSION,
    app = [APP],
    windows = [ {'script': APP,
                 'icon_resources': [(0, '%s.ico' % APPNAME)],
                 'copyright': u'© 2015 Jonathan Harris',
             } ],
    data_files = DATA_FILES,
    options = { 'py2app': PY2APP_OPTIONS,
                'py2exe': PY2EXE_OPTIONS },
    setup_requires = [sys.platform=='darwin' and 'py2app' or 'py2exe'],
)


if sys.platform == 'darwin':
    if isdir('%s/%s.app' % (dist_dir, APPNAME)):
        if macdeveloperid:
            os.system('codesign --deep -v -s "Developer ID Application: %s" %s/%s.app' % (macdeveloperid, dist_dir, APPNAME))
        # Make zip for distribution, preserving signature
        os.system('cd %s; ditto -ck --keepParent --sequesterRsrc %s.app ../%s_mac_%s.zip; cd ..' % (dist_dir, APPNAME, APPNAME, SHORTVERSION))
else:
    # Manually trim the tcl/tk folders
    os.unlink(join(dist_dir, 'w9xpopen.exe'))
    for d in [ r'tcl\tcl8.5\encoding',
               r'tcl\tcl8.5\http1.0',
               r'tcl\tcl8.5\msgs',
               r'tcl\tcl8.5\tzdata',
               r'tcl\tk8.5\demos',
               r'tcl\tk8.5\images',
               r'tcl\tk8.5\msgs', ]:
        shutil.rmtree(join(dist_dir, d))
    os.system(r'"C:\Program Files (x86)\WiX Toolset v3.9\bin\candle.exe" -out %s\ %s.wxs' % (dist_dir, APPNAME))
    if exists('%s/%s.wixobj' % (dist_dir, APPNAME)):
        os.system(r'"C:\Program Files (x86)\WiX Toolset v3.9\bin\light.exe" -sacl -spdb %s\%s.wixobj -out %s_win_%s.msi' % (dist_dir, APPNAME, APPNAME, SHORTVERSION))