#! /usr/bin/env python3

# --------------------------------------------------------------------
import sys, os

# --------------------------------------------------------------------
EMACS = dict(
    darwin = 'share/Emacs.app/Contents/MacOS/Emacs',
    win32  = 'share/emacs/bin/emacs.exe',
    linux  = 'bin/Emacs.AppImage',
)

# --------------------------------------------------------------------
def _main():
    mydir = os.path.realpath(os.path.dirname(__file__))
    emacs = None
    args  = []

    def resource(x):
        return os.path.join(*([mydir] + x.split('/')))

    if sys.platform == 'darwin':
        emacs = os.path.join(mydir, *EMACS['darwin'].split('/'))
    if sys.platform == 'cygwin' or sys.platform.startswith('win'):
        emacs = os.path.join(mydir, *EMACS['win32'].split('/'))
    if sys.platform == 'linux2':
        emacs = os.path.join(mydir, *EMACS['linux'].split('/'))
        if not os.path.exists(emacs):
            emacs = None

    emacs = 'emacs' if emacs is None else emacs

    args.extend(['-l', resource('share/easycrypt/pg/ProofGeneral/generic/proof-site.el')])
    args.extend(['-l', resource('share/easycrypt/pg/emacs.rc')])
    args.extend(['--no-init-file', '--no-site-file', '--debug-init'])

    print('running: %s' % (' '.join([emacs] + args)), file=sys.stderr)

    os.chdir(mydir)
    os.putenv('PATH', '%s%s%s' % (os.path.join(mydir, 'bin'), \
                                  os.pathsep, \
                                  os.environ.get('PATH', '')))
    os.putenv('DESKTOPINTEGRATION', '0')

    try:
        os.execvp(emacs, [emacs] + args)
    except OSError as e:
        print('cannot run Emacs: %s' % (repr(e,)), file=sys.stderr)
        sys.exit(1)

# --------------------------------------------------------------------
if __name__ == '__main__':
    _main()
