114 lines
3.4 KiB
Python
Executable File
114 lines
3.4 KiB
Python
Executable File
#!/usr/bin/env python
|
|
#This file is part of Tryton. The COPYRIGHT file at the top level of
|
|
#this repository contains the full copyright notices and license terms.
|
|
import sys
|
|
import os
|
|
import argparse
|
|
|
|
DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
|
|
'..', '..', 'trytond')))
|
|
if os.path.isdir(DIR):
|
|
sys.path.insert(0, os.path.dirname(DIR))
|
|
|
|
import trytond
|
|
from trytond.version import VERSION
|
|
|
|
|
|
def parse_commandline():
|
|
options = {}
|
|
|
|
parser = argparse.ArgumentParser(prog='trytond')
|
|
|
|
parser.add_argument('--version', action='version',
|
|
version='%(prog)s ' + VERSION)
|
|
parser.add_argument("-c", "--config", dest="config",
|
|
help="specify config file")
|
|
parser.add_argument('--debug', dest='debug_mode', action='store_true',
|
|
help='enable debug mode (start post-mortem debugger if exceptions'
|
|
' occur)')
|
|
parser.add_argument("-v", "--verbose", action="store_true",
|
|
dest="verbose", help="enable verbose mode")
|
|
|
|
parser.add_argument("-d", "--database", dest="db_name",
|
|
help="specify the database name")
|
|
parser.add_argument("-i", "--init", dest="init",
|
|
help="init a module (use \"all\" for all modules)")
|
|
parser.add_argument("-u", "--update", dest="update",
|
|
help="update a module (use \"all\" for all modules)")
|
|
|
|
parser.add_argument("--pidfile", dest="pidfile",
|
|
help="file where the server pid will be stored")
|
|
parser.add_argument("--logfile", dest="logfile",
|
|
help="file where the server log will be stored")
|
|
parser.add_argument("--disable-cron", dest="cron",
|
|
action="store_false", help="disable cron")
|
|
|
|
parser.epilog = ('The first time a database is initialized with "-i" admin'
|
|
' password is read from file defined by TRYTONPASSFILE '
|
|
'environment variable or interactively ask user. '
|
|
'The config file can be specified in the TRYTOND_CONFIG '
|
|
'environment variable.')
|
|
|
|
opt = parser.parse_args()
|
|
|
|
if opt.config:
|
|
options['configfile'] = opt.config
|
|
else:
|
|
# No config file speficified, it will be guessed
|
|
options['configfile'] = None
|
|
|
|
for arg in (
|
|
'verbose',
|
|
'debug_mode',
|
|
'pidfile',
|
|
'logfile',
|
|
'cron',
|
|
):
|
|
if getattr(opt, arg) is not None:
|
|
options[arg] = getattr(opt, arg)
|
|
|
|
db_name = []
|
|
if opt.db_name:
|
|
for i in opt.db_name.split(','):
|
|
db_name.append(i)
|
|
options['db_name'] = db_name
|
|
|
|
init = {}
|
|
if opt.init:
|
|
for i in opt.init.split(','):
|
|
if i != 'test':
|
|
init[i] = 1
|
|
options['init'] = init
|
|
|
|
update = {}
|
|
if opt.update:
|
|
for i in opt.update.split(','):
|
|
if i != 'test':
|
|
update[i] = 1
|
|
options['update'] = update
|
|
|
|
return options
|
|
|
|
|
|
if '--profile' in sys.argv:
|
|
import profile
|
|
import pstats
|
|
import tempfile
|
|
sys.argv.remove('--profile')
|
|
|
|
options = parse_commandline()
|
|
statfile = tempfile.mkstemp(".stat", "trytond-")[1]
|
|
profile.run('trytond.server.TrytonServer(options).run()', statfile)
|
|
s = pstats.Stats(statfile)
|
|
s.sort_stats('cumulative').print_stats()
|
|
s.sort_stats('call').print_stats()
|
|
s.sort_stats('time').print_stats()
|
|
s.sort_stats('time')
|
|
s.print_callers()
|
|
s.print_callees()
|
|
|
|
os.remove(statfile)
|
|
else:
|
|
options = parse_commandline()
|
|
trytond.server.TrytonServer(options).run()
|