#!/usr/bin/env python
import sys
if sys.version[0] == '1':
print """Webware requires Python version 2.0+. Webware is currently being
run with the Python version:
%s
This Python interpreter is located at:
%s
You may need to change the AppServer script, giving the full path of
the appropriate Python interpreter.""" % (sys.version, sys.executable)
sys.exit(1)
import time; startTime = time.time()
runProfile = 0 # as in Python's profile module. See doc string of Profiler.py
import os, sys, string
profiler = None # Forget this and read the doc string of Profiler.py
def usage():
print 'error: Launch.py (of WebKit)'
print 'usage: Launch.py SERVER ARGS'
sys.exit(1)
def launchWebKit(server, appWorkPath, args):
"""
Import and launch the specified WebKit server.
"""
# allow for a .py on the server name
if server[-3:]=='.py':
server = server[:-3]
# clean up sys.path
def ok(directory):
return directory not in ['', '.'] and string.lower(directory[-6:])!='webkit'
sys.path = filter(ok, sys.path)
sys.path.insert(0, '')
# Import the server's main()
import WebKit
code = 'from WebKit.%s import main' % server
dict = {}
exec code in dict
main = dict['main']
# Set up a reference to our profiler so applications can import and use it
from WebKit import Profiler
Profiler.startTime = startTime
if runProfile:
Profiler.profiler = profiler
# Run!
args = args + ['workdir=' + appWorkPath]
main(args)
def main(args=None):
if args is None:
args = sys.argv
if len(args)<2:
usage()
server = args[1] # the server
# figure out directory locations
webKitPath = os.path.dirname(os.path.join(os.getcwd(), sys.argv[0]))
webwarePath = os.path.dirname(webKitPath)
# go to Webware dir so that:
# - importing packages like 'WebUtils' hits this Webware
# - we cannot import WebKit modules without qualifying them
os.chdir(webwarePath)
# Go!
launchWebKit(server, webKitPath, args[2:])
if __name__=='__main__':
if runProfile:
print 'Profiling is on. See doc string in Profiler.py for more info.'
from profile import Profile
profiler = Profile()
profiler.runcall(main)
from WebKit import Profiler
Profiler.dumpStats()
else:
main()