#!/usr/bin/python
import tempfile,os,sys,time,readline

opt = {}
opt["verbose"] = 1

def dbg(msg):
    global opt
    if opt["verbose"] > 1:
        sys.stderr.write("dbg: %s\n" % msg)
def verbose(msg):
    global opt
    if opt["verbose"] > 0:
        sys.stderr.write("%s\n" % msg)

def tmp(str):
    fd, name = tempfile.mkstemp(str)
    os.close(fd)
    return name

def write(file, data):
    fd = open(file, "w+")
    fd.write(data)
    fd.close()

def read(file):
    fd = open(file)
    ret = fd.read()
    fd.close()
    return ret
    
def main():
    count = 0

    f = {}
    for i in ["inlock", "in", "outlock", "out"]:
        f[i] = tmp(i)

    write(f["inlock"], str(count))
    ret = "./chickenfoot-launcher repl.js %s %s %s %s" % (f["inlock"], f["in"], f["outlock"], f["out"])
    verbose(ret)
    i, o, e = os.popen3(ret)
    while True:
        ret = read(f["outlock"]).rstrip("\n")
        if ret == str(count):
            break
        dbg(ret)
        time.sleep(1)
    count += 1

    while True:
        cmd = raw_input("> ").rstrip("\n").rstrip(";");
        dbg(cmd)
        write(f["in"], cmd)
        write(f["inlock"], str(count))
                 
        while True:
            ret = read(f["outlock"]).rstrip("\n")
            if ret == str(count):
                break
            dbg(ret)
            time.sleep(1)

        ret = read(f["out"])
        print ret

        count += 1

main()
# todo ctrl-c handler: remove temporary files
