#!/usr/bin/env python
import sys,os
import os.path
from optparse import OptionParser

def reexec_with_pythonw():
    if sys.platform == 'darwin' and\
           not sys.executable.endswith('MacOS/Python'):
        print >>sys.stderr,'re-executing using pythonw'
        os.execvp('pythonw',['pythonw',__file__] + sys.argv[1:])

def getNeverDir(path):
    while os.path.basename(path) != 'neveredit' and\
          os.path.basename(path) != 'bin' and\
          os.path.dirname(path) != path:
        path = os.path.dirname(path)
    if os.path.basename(path) == 'bin':
        path = os.path.join(os.path.dirname(path),'lib/python')
    elif os.path.basename(path) == 'neveredit':
        path = os.path.dirname(path)
    return path

parser = OptionParser()
parser.add_option('--devel',action='store_true',dest='devel',
                  help='run in development mode (does not use installed version)')
parser.add_option('--disable_pythonw',action='store_true',dest='no_pythonw',
                  help='disable automatically running pythonw on Mac')
parser.add_option('-v','--version',action='store_true',dest='version',
                  help='Display neveredit version')

options,args = parser.parse_args()
    
if not options.no_pythonw:
    reexec_with_pythonw()
    
if options.devel:
    sys.path.insert(0,getNeverDir(os.getcwd()))

try:
    if options.version:
        import neveredit
    else:
        import neveredit.ui.NeverEditMainApp
except ImportError:
    sys.path.append(getNeverDir(os.path.abspath(os.path.dirname(__file__))))
    try:
        if options.version:
            import neveredit
        else:
            import neveredit.ui.NeverEditMainApp
    except ImportError:
        print sys.exc_info()[1]
        print sys.path
        print >>sys.stderr,'Faulty neveredit installation: could not import main class'
        sys.exit(1)

if options.version:
    print 'neveredit module at',neveredit.__file__
    print 'neveredit version',neveredit.__version__
    sys.exit()
    
print 'Using main class from:',neveredit.ui.NeverEditMainApp.__file__
neveredit.ui.NeverEditMainApp.run(args)
