From c7b52203a0c30c674aeb9d13925835f447dc3f51 Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Thu, 12 Dec 2019 20:05:49 -0800 Subject: [PATCH] Don't require newlines for main classes There typically are fewer than 10 main classes in a project so allow the user to just input a single digit in those cases. Otherwise fallback to a line reader. --- main/src/main/scala/sbt/Defaults.scala | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 1872fb7e1..c80b60064 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -1486,7 +1486,24 @@ object Defaults extends BuildCommon { } def askForMainClass(classes: Seq[String]): Option[String] = - sbt.SelectMainClass(Some(SimpleReader readLine _), classes) + sbt.SelectMainClass( + if (classes.length >= 10) Some(SimpleReader.readLine(_)) + else + Some(s => { + def print(st: String) = { scala.Console.out.print(st); scala.Console.out.flush() } + print(s) + Terminal.withRawSystemIn { + Terminal.wrappedSystemIn.read match { + case -1 => None + case b => + val res = b.toChar.toString + println(res) + Some(res) + } + } + }), + classes + ) def pickMainClass(classes: Seq[String]): Option[String] = sbt.SelectMainClass(None, classes)