X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=quickrun.py;h=4bd580285a2631b083a00de83aa887e99b1b69a5;hp=b8af4b23cd30e9fd4428b62b53236bcffb82f6ad;hb=effa209e386930ad705f255e61c24a5dfb057987;hpb=a61d6f1b713836d0614eaa6f1ea033420e73dd6f diff --git a/quickrun.py b/quickrun.py index b8af4b2..4bd5802 100755 --- a/quickrun.py +++ b/quickrun.py @@ -1,24 +1,10 @@ #!/usr/bin/python # -# Copyright (C) 2014 Simo Sorce -# -# see file 'COPYING' for use and warranty information -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# Copyright (C) 2014 Ipsilon project Contributors, for license see COPYING import argparse import os +import shutil import subprocess from string import Template @@ -31,31 +17,16 @@ def parse_args(): 'Run a test Ipsilon instance from the checkout directory') parser.add_argument('--workdir', default=os.path.join(os.getcwd(), 'qrun'), help="Directory in which db/session files are stored") + parser.add_argument('--cleanup', '-c', action='store_true', default=False, + help="Wipe workdir before starting") return vars(parser.parse_args()) -CONF_TEMPLATE=''' -[global] -debug = True - -log.screen = True -base.mount = "/idp" -base.dir = "${BASEDIR}" -admin.config.db = "${ADMINDB}" -user.prefs.db = "${USERSDB}" -transactions.db = "${TRANSDB}" - -tools.sessions.on = True -tools.sessions.storage_type = "file" -tools.sessions.storage_path = "${WORKDIR}/sessions" -tools.sessions.timeout = 60 -tools.sessions.secure = False -tools.sessions.httponly = False -''' +CONF_TEMPLATE="templates/install/ipsilon.conf" ADMIN_TEMPLATE=''' CREATE TABLE login_config (name TEXT,option TEXT,value TEXT); -INSERT INTO login_config VALUES('global', 'order', 'testauth'); +INSERT INTO login_config VALUES('global', 'enabled', 'testauth'); ''' USERS_TEMPLATE=''' @@ -73,20 +44,32 @@ def config(workdir): f.write(ADMIN_TEMPLATE) subprocess.call(['sqlite3', '-init', sql, admin_db, '.quit']) - users_db = os.path.join(workdir, 'users.sqlite') + users_db = os.path.join(workdir, 'userprefs.sqlite') sql = os.path.join(workdir, 'users.sql') with open(sql, 'w+') as f: f.write(USERS_TEMPLATE) subprocess.call(['sqlite3', '-init', sql, users_db, '.quit']) trans_db = os.path.join(workdir, 'transactions.sqlite') - - t = Template(CONF_TEMPLATE) - text = t.substitute({'BASEDIR': os.getcwd(), - 'WORKDIR': workdir, - 'ADMINDB': admin_db, - 'USERSDB': users_db, - 'TRANSDB': trans_db}) + cachedir = os.path.join(workdir, 'cache') + + with open(CONF_TEMPLATE) as f: + conf_template = f.read() + t = Template(conf_template) + text = t.substitute({'debugging': 'True', + 'instance': 'idp', + 'staticdir': os.getcwd(), + 'datadir': workdir, + 'cachedir': cachedir, + 'admindb': admin_db, + 'usersdb': users_db, + 'transdb': trans_db, + 'sesstype': 'file', + 'sessopt': 'path', + 'sessval': os.path.join(workdir, 'sessions'), + 'secure': 'False', + 'cleanup_interval': 1, + }) conf = os.path.join(workdir, 'ipsilon.conf') with open(conf, 'w+') as f: f.write(text) @@ -98,12 +81,32 @@ if __name__ == '__main__': penv = dict() penv.update(os.environ) - penv['PYTHONPATH'] = './' + penv['PYTHONPATH'] = os.getcwd() + + schema_init = os.path.join(os.getcwd(), 'ipsilon/install/ipsilon-upgrade-database') + exe = os.path.join(os.getcwd(), 'ipsilon/ipsilon') + + if args['cleanup']: + shutil.rmtree(args['workdir']) if not os.path.exists(args['workdir']): conf = config(args['workdir']) else: conf = os.path.join(args['workdir'], 'ipsilon.conf') - p = subprocess.Popen(['./ipsilon/ipsilon', conf], env=penv) + if not os.path.exists(os.path.join(args['workdir'], 'ui')): + os.symlink(os.path.join(os.getcwd(), 'ui'), + os.path.join(args['workdir'], 'ui')) + + if not os.path.exists(os.path.join(args['workdir'], 'cache')): + # This is only used in quickrun. Apache serves this directly + os.makedirs(os.path.join(args['workdir'], 'cache')) + + os.chdir(args['workdir']) + + p = subprocess.Popen([schema_init, conf], env=penv) p.wait() + + if p.returncode == 0: + p = subprocess.Popen([exe, conf], env=penv) + p.wait()