From 4cf2b7269d2cfa81f99ee933111c1af54dff525d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=8BAndrzej=20Ressel?= Date: Sat, 3 Jun 2023 22:44:19 +0200 Subject: [PATCH] Cache echoEnabled --- .../main/scala/sbt/internal/util/Terminal.scala | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala b/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala index 41b687ca5..c935a0999 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/Terminal.scala @@ -874,13 +874,19 @@ object Terminal { override lazy val isAnsiSupported: Boolean = !isDumbTerminal && Terminal.isAnsiSupported && !isCI override private[sbt] def progressState: ProgressState = consoleProgressState.get - override def isEchoEnabled: Boolean = - try system.echo() - catch { case _: InterruptedIOException => false } override def isSuccessEnabled: Boolean = true + private lazy val echoEnabled: AtomicBoolean = new AtomicBoolean({ + try system.echo() + catch { + case _: InterruptedIOException => false + } + }) + override def isEchoEnabled: Boolean = echoEnabled.get() override def setEchoEnabled(toggle: Boolean): Unit = - try Util.ignoreResult(system.echo(toggle)) - catch { case _: InterruptedIOException => } + try { + Util.ignoreResult(system.echo(toggle)) + echoEnabled.set(toggle) + } catch { case _: InterruptedIOException => } override def getBooleanCapability(capability: String): Boolean = capabilityMap.get(capability).fold(false)(system.getBooleanCapability) override def getNumericCapability(capability: String): Integer =