From b00dcb1b9d56a576bdd675b1c52e6c3ce6f1185e Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Fri, 16 Nov 2018 23:06:36 -0800 Subject: [PATCH] Fix task progress blank line behavior Run readyLog lazily. --- .../scala/sbt/internal/TaskProgress.scala | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/main/src/main/scala/sbt/internal/TaskProgress.scala b/main/src/main/scala/sbt/internal/TaskProgress.scala index 641f3a932..04e792510 100644 --- a/main/src/main/scala/sbt/internal/TaskProgress.scala +++ b/main/src/main/scala/sbt/internal/TaskProgress.scala @@ -29,6 +29,7 @@ private[sbt] final class TaskProgress(currentRef: ProjectRef) extends ExecutePro private[this] val calledBy = new ConcurrentHashMap[Task[_], Task[_]] private[this] val anonOwners = new ConcurrentHashMap[Task[_], Task[_]] private[this] val isReady = new AtomicBoolean(false) + private[this] val isLogReady = new AtomicBoolean(false) private[this] val isAllCompleted = new AtomicBoolean(false) override def initial: Unit = () @@ -75,7 +76,6 @@ private[sbt] final class TaskProgress(currentRef: ProjectRef) extends ExecutePro Thread.sleep(500) } } - readyLog() while (!isAllCompleted.get) { blocking { report() @@ -86,13 +86,16 @@ private[sbt] final class TaskProgress(currentRef: ProjectRef) extends ExecutePro private[this] val console = ConsoleOut.systemOut private[this] def readyLog(): Unit = { - console.println("") - console.println("") - console.println("") - console.println("") - console.println("") - console.println("") - console.print(CursorUp5) + if (isLogReady.get) () + else { + console.println("") + console.println("") + console.println("") + console.println("") + console.println("") + console.print(CursorUp5) + isLogReady.set(true) + } } private[this] val stopReportTask = @@ -100,6 +103,7 @@ private[sbt] final class TaskProgress(currentRef: ProjectRef) extends ExecutePro private[this] def report(): Unit = console.lockObject.synchronized { val currentTasks = activeTasks.asScala.toList def report0: Unit = { + readyLog() console.print(s"$CursorDown1") currentTasks foreach { case (task, start) =>