#!/usr/bin/python3
import os
import sys

if sys.version_info[0] < 3 or sys.version_info[1] < 2:
    print("You need at least Python 3.2 to run FS-UAE Launcher")
    sys.exit(1)

if os.environ.get("FSGS_PYTHONPATH", ""):
    sys.path.insert(0, os.environ.get("FSGS_PYTHONPATH"))
else:
    sys.path.insert(0, "/usr/share/fs-uae-launcher")

if os.getcwd().startswith("C:\\msys64\\home\\"):
    os.environ["PATH"] = "C:\\msys64\\mingw64\\bin;" + os.environ["PATH"]


def print_version():
    import launcher.version

    print(launcher.version.VERSION)


def frozen_qpa_platform_plugin_path():
    import fsboot

    if sys.platform == "darwin":
        os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = os.path.join(
            fsboot.executable_dir(), "..", "PlugIns", "platforms"
        )
        pass
    else:
        os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = os.path.join(
            fsboot.executable_dir(), "platforms"
        )


def frozen_python_libs():
    import fsboot

    libs_dirs = [fsboot.executable_dir()]
    if sys.platform == "darwin":
        # Add .app/Contents/Python to libs_dirs
        libs_dir = os.path.abspath(
            os.path.join(fsboot.executable_dir(), "..", "Python")
        )
        print(libs_dir, os.path.exists(libs_dir))
        if os.path.exists(libs_dir):
            libs_dirs.append(libs_dir)
    libs_dir = os.path.abspath(
        os.path.join(fsboot.executable_dir(), "..", "..", "Python")
    )
    print(libs_dir, os.path.exists(libs_dir))
    if os.path.exists(libs_dir):
        libs_dirs.append(libs_dir)
    else:
        libs_dir = os.path.abspath(
            os.path.join(
                fsboot.executable_dir(), "..", "..", "..", "..", "..", "Python"
            )
        )
        print(libs_dir, os.path.exists(libs_dir))
        if os.path.exists(libs_dir):
            libs_dirs.append(libs_dir)
    for libs_dir in libs_dirs:
        for item in os.listdir(libs_dir):
            if item.endswith(".zip"):
                path = os.path.join(libs_dir, item)
                print("adding", path)
                sys.path.insert(0, path)


def frozen_requests_ca_cert():
    import fsboot

    data_dirs = [fsboot.executable_dir()]
    data_dir = os.path.abspath(
        os.path.join(fsboot.executable_dir(), "..", "..", "Data")
    )
    print(data_dir, os.path.exists(data_dir))
    if os.path.exists(data_dir):
        data_dirs.append(data_dir)
    else:
        data_dir = os.path.abspath(
            os.path.join(
                fsboot.executable_dir(), "..", "..", "..", "..", "..", "Data"
            )
        )
        print(data_dir, os.path.exists(data_dir))
        if os.path.exists(data_dir):
            data_dirs.append(data_dir)
    for data_dir in data_dirs:
        path = os.path.join(data_dir, "cacert.pem")
        if os.path.exists(path):
            print("[HTTP] Using {}".format(path))
            os.environ["REQUESTS_CA_BUNDLE"] = path
            break


def main():
    if getattr(sys, "frozen", False):
        frozen_qpa_platform_plugin_path()
        frozen_python_libs()
        frozen_requests_ca_cert()

    if "--version" in sys.argv:
        print_version()
        sys.exit(0)

    import launcher.apps

    launcher.apps.main()


main()

# Dummy imports for cx_Freeze
sys.exit(0)

# noinspection PyUnreachableCode,PyUnresolvedReferences,PyProtectedMember
import idna.idnadata

# noinspection PyUnreachableCode,PyUnresolvedReferences,PyProtectedMember
import pkg_resources._vendor.appdirs

# noinspection PyUnreachableCode,PyUnresolvedReferences,PyProtectedMember
import pkg_resources._vendor.packaging.requirements

# noinspection PyUnreachableCode,PyUnresolvedReferences,PyProtectedMember
import pkg_resources._vendor.packaging.specifiers

# noinspection PyUnreachableCode,PyUnresolvedReferences,PyProtectedMember
import pkg_resources._vendor.packaging.version

# noinspection PyUnreachableCode,PyUnresolvedReferences,PyProtectedMember
import pkg_resources._vendor.pyparsing

# noinspection PyUnreachableCode,PyUnresolvedReferences,PyProtectedMember
import pkg_resources._vendor.six

# noinspection PyUnreachableCode,PyUnresolvedReferences,PyProtectedMember
import PyQt5.sip

# noinspection PyUnreachableCode,PyUnresolvedReferences,PyProtectedMember
import _sysconfigdata_m_darwin_darwin
