Don't stop watch input thread on bad input

In a continuous build in sbt 1.4.0-RC1, if the user enters an invalid
option, it causes the input thread to exit which means the watch would
no longer accept input commands (including <enter> to exit). This fixes
that behavior.
This commit is contained in:
Ethan Atkins 2020-09-20 16:30:23 -07:00
parent cc0445db4e
commit 1e448bb403
1 changed files with 2 additions and 2 deletions

View File

@ -788,7 +788,7 @@ private[sbt] object Continuous extends DeprecatedContinuous {
try {
interrupted.set(false)
terminal.inputStream.read match {
case -1 => Watch.Ignore
case -1 => throw new InterruptedException
case 3 => Watch.CancelWatch // ctrl+c on windows
case byte => inputHandler(byte.toChar.toString)
}
@ -800,7 +800,7 @@ private[sbt] object Continuous extends DeprecatedContinuous {
action match {
case Watch.Ignore =>
val stop = interrupted.get || Thread.interrupted
if ((!Terminal.systemInIsAttached || alternative.isDefined) && !stop) impl()
if (!stop) impl()
else None
case r => Some(r)
}