#!/usr/bin/env python3
"""
DAMARISi3 command-line interface.
"""

import sys
import os
import argparse
import sqlite3

# for numpy-1.1 and later: check the environment for LANG and LC_NUMERIC
# see: http://projects.scipy.org/scipy/numpy/ticket/902
if os.environ.get("LANG", "").startswith("de") or os.environ.get("LC_NUMERIC", "").startswith("de"):
    os.environ["LC_NUMERIC"] = "C"


def main():
    """Main entry point for DAMARIS."""
    parser = argparse.ArgumentParser(description='DArmstadt MAgnetic Resonance Instrumentation Software')

    parser.add_argument("--run", action="store_true", help="run DAMARIS immediately with given scripts")
    parser.add_argument("--clean", action="store_true", help="cleanup DAMARIS run files")
    parser.add_argument("--debug", action="store_true", help="run DAMARIS with DEBUG flag set")
    parser.add_argument("--mpl", help="run DAMARIS with matplotlib backend",
                        choices=["GTK3Agg", "GTK3Cairo"], default="GTK3Agg")
    parser.add_argument("exp_script", help="experiment script", nargs="?", metavar="EXP.py")
    parser.add_argument("res_script", help="result script", nargs="?", metavar="RES.py")

    args = parser.parse_args()

    import matplotlib
    if args.mpl:
        matplotlib.use(args.mpl)

    import damaris.gui.DamarisGUI

    lockfile = os.path.expanduser('~/.damaris.lockdb')
    if args.clean:
        if os.path.exists(lockfile):
            print("Removing lockfile: %s" % lockfile)
            os.remove(lockfile)
        else:
            print("Lockfile does not exists: %s" % lockfile)
    lockdb = sqlite3.connect(lockfile)

    c = lockdb.cursor()
    c.execute("CREATE TABLE IF NOT EXISTS damaris (uuid text, status text)")
    lockdb.commit()

    if args.debug:
        damaris.gui.DamarisGUI.debug = True
        print("debug flag set")
        try:
            import resource
            resource.setrlimit(resource.RLIMIT_CORE, (-1, -1))
        except ImportError:
            pass

    print(args)
    d = damaris.gui.DamarisGUI.DamarisGUI(args.exp_script, args.res_script, start_immediately=args.run)
    d.run()

    sys.stdout = sys.__stdout__
    sys.stderr = sys.__stderr__


if __name__ == "__main__":
    main()
