Skip to content

Commit

Permalink
Fix unexpected progress bars for coursier logging on CI
Browse files Browse the repository at this point in the history
The hack to display a message right before progress bars was enabling
them even if they were not initially.
  • Loading branch information
alexarchambault committed Apr 4, 2022
1 parent 920df3b commit 41c280a
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,10 @@
}
]
},
{
"name": "coursier.cache.loggers.RefreshLogger",
"allDeclaredFields": true
},
{
"name": "java.lang.String"
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,30 +1,44 @@
package scala.build.internal

import coursier.cache.FileCache
import coursier.cache.loggers.RefreshLogger
import coursier.cache.loggers.{ProgressBarRefreshDisplay, RefreshDisplay, RefreshLogger}
import coursier.jvm.JavaHome
import coursier.util.Task

object CsLoggerUtil {

// All of these methods are a bit flaky…

private lazy val loggerDisplay: RefreshLogger => RefreshDisplay = {
val m = classOf[RefreshLogger].getDeclaredField("display")
m.setAccessible(true)
logger => m.get(logger).asInstanceOf[RefreshDisplay]
}

implicit class CsCacheExtensions(private val cache: FileCache[Task]) extends AnyVal {
def withMessage(message: String): FileCache[Task] =
cache.logger match {
case _: RefreshLogger =>
var displayed = false
val logger = RefreshLogger.create(
CustomProgressBarRefreshDisplay.create(
keepOnScreen = false,
if (!displayed) {
System.err.println(message)
displayed = true
},
()
case logger: RefreshLogger =>
val shouldUpdateLogger = loggerDisplay(logger) match {
case _: CustomProgressBarRefreshDisplay => true
case _: ProgressBarRefreshDisplay => true
case _ => false
}
if (shouldUpdateLogger) {
var displayed = false
val updatedLogger = RefreshLogger.create(
CustomProgressBarRefreshDisplay.create(
keepOnScreen = false,
if (!displayed) {
System.err.println(message)
displayed = true
},
()
)
)
)
cache.withLogger(logger)
cache.withLogger(updatedLogger)
}
else cache
case _ => cache
}
}
Expand Down

0 comments on commit 41c280a

Please sign in to comment.