Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sealed trait ResultLine {
- def line: String
- }
- final case class Out(line: String) extends ResultLine {
- override def toString: String = s"OUT: $line\n"
- }
- final case class Err(line: String) extends ResultLine {
- override def toString: String = s"ERR: $line\n"
- }
- final case class ProcessResult(output: Seq[ResultLine], exit: Int)
- private def executeProcess(cmd: String, parameters: Seq[String]): ProcessResult = {
- import scala.sys.process._
- val results = new ConcurrentLinkedQueue[ResultLine]
- val status = Process(cmd, parameters).run(ProcessLogger(
- out ⇒ results.add(Out(out)),
- err ⇒ results.add(Err(err))
- )).exitValue()
- val builder = Seq.newBuilder[ResultLine]
- while(!results.isEmpty) {
- builder += results.poll()
- }
- ProcessResult(builder.result(), status)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement