我想运行一个需要用户输入的流程。它可能只是输入密码或回答多个问题。我事先知道所有可能的问题但不是订单。
这是一次天真的尝试:
type Line = String
def runAuto(cmd: String, handlers: Map[Line, OutputStream => Unit]): Unit = {
cmd.run(new ProcessIO(
_,
stdout => {
val bs = new BufferedSource(stdout)
for (line <- bs.getLines()) {
handlers.get(line.trim) match {
case Some(handler) => handler(stdin) // <- hypothetical
case _ => println(line)
}
}
bs.close()
},
stderr => {
val bs = new BufferedSource(stderr)
bs.getLines().foreach(err => println(s"ERR: $err"))
bs.close()
}
))
}
主要问题是:我在处理标准输出时不知道如何访问标准输入。