caas is now drivable through stdin

* added idetools --eval
* streams.readLine recognises and applies the backspace character
This commit is contained in:
Zahary Karadjov 2012-11-15 15:01:52 +02:00
commit 091c1b3075
18 changed files with 176 additions and 137 deletions

View file

@ -56,17 +56,30 @@ proc ProcessCmdLine*(pass: TCmdLinePass, cmd: string) =
rawMessage(errArgsNeedRunOption, [])
proc serve*(action: proc (){.nimcall.}) =
var server = Socket()
let p = getConfigVar("server.port")
let port = if p.len > 0: parseInt(p).TPort else: 6000.TPort
server.bindAddr(port, getConfigVar("server.address"))
var inp = "".TaintedString
server.listen()
new(stdoutSocket)
while true:
accept(server, stdoutSocket)
discard stdoutSocket.recvLine(inp)
processCmdLine(passCmd2, inp.string)
action()
stdoutSocket.send("\c\L")
stdoutSocket.close()
let typ = getConfigVar("server.type")
case typ
of "stdin":
while true:
var line = stdin.readLine.string
if line == "quit": quit()
processCmdLine(passCmd2, line)
action()
of "tcp", "":
var server = Socket()
let p = getConfigVar("server.port")
let port = if p.len > 0: parseInt(p).TPort else: 6000.TPort
server.bindAddr(port, getConfigVar("server.address"))
var inp = "".TaintedString
server.listen()
new(stdoutSocket)
while true:
accept(server, stdoutSocket)
discard stdoutSocket.recvLine(inp)
processCmdLine(passCmd2, inp.string)
action()
stdoutSocket.send("\c\L")
stdoutSocket.close()
else:
echo "Invalid server.type:", typ
quit 1