X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=quickrun.py;h=57cdcb747d53862c78ebd3a74db7d9f178f4d4d9;hp=caa9627a3fcce068d9abd21c75e394232d38fc54;hb=217cabe5a2b0950b9ac4090568aa8986d51f4fc5;hpb=a06b990c66c32909b8872ac2f5d825c6b7316a3a diff --git a/quickrun.py b/quickrun.py index caa9627..57cdcb7 100755 --- a/quickrun.py +++ b/quickrun.py @@ -19,6 +19,7 @@ import argparse import os +import shutil import subprocess from string import Template @@ -29,30 +30,18 @@ logger = None def parse_args(): parser = argparse.ArgumentParser(description=\ 'Run a test Ipsilon instance from the checkout directory') - parser.add_argument('--workdir', default=os.path.join(os.getcwd(), 'tmp'), + 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}" - -tools.sessions.on = True -tools.sessions.storage_type = "file" -tools.sessions.storage_path = "${WORKDIR}/sessions" -tools.sessions.timeout = 60 -''' +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=''' @@ -60,39 +49,68 @@ CREATE TABLE users(name TEXT, option TEXT, value TEXT); INSERT INTO users VALUES('admin', 'is_admin', '1'); ''' -if __name__ == '__main__': - - args = parse_args() - - penv = dict() - penv.update(os.environ) - penv['PYTHONPATH'] = './' - - if not os.path.exists(args['workdir']): - os.makedirs(args['workdir']) - os.makedirs(os.path.join(args['workdir'], 'sessions')) +def config(workdir): + os.makedirs(workdir) + os.makedirs(os.path.join(workdir, 'sessions')) - admin_db = os.path.join(args['workdir'], 'adminconfig.sqlite') - sql = os.path.join(args['workdir'], 'admin.sql') + admin_db = os.path.join(workdir, 'adminconfig.sqlite') + sql = os.path.join(workdir, 'admin.sql') with open(sql, 'w+') as f: f.write(ADMIN_TEMPLATE) subprocess.call(['sqlite3', '-init', sql, admin_db, '.quit']) - users_db = os.path.join(args['workdir'], 'users.sqlite') - sql = os.path.join(args['workdir'], 'users.sql') + 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']) - t = Template(CONF_TEMPLATE) - text = t.substitute({'BASEDIR': os.getcwd(), - 'WORKDIR': args['workdir'], - 'ADMINDB': admin_db, - 'USERSDB': users_db}) - conf = os.path.join(args['workdir'], 'ipsilon.conf') + trans_db = os.path.join(workdir, 'transactions.sqlite') + + 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, + 'admindb': admin_db, + 'usersdb': users_db, + 'transdb': trans_db, + 'sesstype': 'file', + 'sessopt': 'path', + 'sessval': os.path.join(workdir, 'sessions'), + 'secure': 'False', + }) + conf = os.path.join(workdir, 'ipsilon.conf') with open(conf, 'w+') as f: f.write(text) + return conf + +if __name__ == '__main__': + + args = parse_args() + + penv = dict() + penv.update(os.environ) + penv['PYTHONPATH'] = os.getcwd() + + 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') + + 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')) + + os.chdir(args['workdir']) - p = subprocess.Popen(['./ipsilon/ipsilon', conf], env=penv) + p = subprocess.Popen([exe, conf], env=penv) p.wait()