#!/usr/bin/env python

import sys,os,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:
        print 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')
options,args = parser.parse_args()

if not options.no_pythonw:
    reexec_with_pythonw()

if options.devel:
    sys.path.insert(0,getNeverDir(os.getcwd()))

if len(args) < 1:
    print >>sys.stderr,'usage: run/runmodule <module>'
    sys.exit(1)

print 'trying to run',args[0]

def my_import(name):
    mod = __import__(name,globals())
    components = name.split('.')
    for comp in components[1:]:
        mod = getattr(mod, comp)
    return mod

try:
    mod = my_import(args[0])
except ImportError:
     sys.path.append(getNeverDir(os.path.abspath(os.path.dirname(__file__))))
     try:
         mod = my_import(args[0])
     except ImportError:
         print sys.exc_info()[1]
         print sys.path
         print >>sys.stderr,'Faulty neveredit installation: could not import requested module "'\
               + args[0] + '"'
         sys.exit(1)

print 'Using main class from:',mod.__file__
mod.run(args[1:])
