mirror of https://github.com/sbt/sbt.git
Merge pull request #5025 from eatkins/supershell-appender
Improve supershell appender management
This commit is contained in:
commit
be1163b672
|
|
@ -298,14 +298,13 @@ object Defaults extends BuildCommon {
|
|||
turbo :== SysProp.turbo,
|
||||
useSuperShell := { if (insideCI.value) false else SysProp.supershell },
|
||||
progressReports := {
|
||||
val progress = (ThisBuild / useSuperShell).value
|
||||
val rs = EvaluateTask.taskTimingProgress.toVector ++
|
||||
EvaluateTask.taskTraceEvent.toVector ++ {
|
||||
if (progress) Vector(EvaluateTask.taskProgress)
|
||||
else Vector()
|
||||
}
|
||||
val rs = EvaluateTask.taskTimingProgress.toVector ++ EvaluateTask.taskTraceEvent.toVector
|
||||
rs map { Keys.TaskProgress(_) }
|
||||
},
|
||||
progressState := {
|
||||
if ((ThisBuild / useSuperShell).value) Some(new ProgressState(SysProp.supershellBlankZone))
|
||||
else None
|
||||
},
|
||||
Previous.cache := new Previous(
|
||||
Def.streamsManagerKey.value,
|
||||
Previous.references.value.getReferences
|
||||
|
|
|
|||
|
|
@ -165,12 +165,6 @@ object EvaluateTask {
|
|||
Some(sharedTraceEvent)
|
||||
} else None
|
||||
|
||||
def taskProgress: ExecuteProgress[Task] = {
|
||||
val appender = MainAppender.defaultScreen(StandardMain.console)
|
||||
val log = LogManager.progressLogger(appender)
|
||||
new TaskProgress(log)
|
||||
}
|
||||
|
||||
// sbt-pgp calls this
|
||||
@deprecated("No longer used", "1.3.0")
|
||||
private[sbt] def defaultProgress(): ExecuteProgress[Task] = ExecuteProgress.empty[Task]
|
||||
|
|
@ -236,12 +230,19 @@ object EvaluateTask {
|
|||
extracted,
|
||||
structure
|
||||
)
|
||||
val reporters = maker.map(_.progress) ++
|
||||
val progressReporter = extracted.get(progressState in ThisBuild).map { ps =>
|
||||
ps.reset()
|
||||
ConsoleAppender.setShowProgress(true)
|
||||
val appender = MainAppender.defaultScreen(StandardMain.console)
|
||||
appender match {
|
||||
case c: ConsoleAppender => c.setProgressState(ps)
|
||||
case _ =>
|
||||
}
|
||||
val log = LogManager.progressLogger(appender)
|
||||
new TaskProgress(log)
|
||||
}
|
||||
val reporters = maker.map(_.progress) ++ progressReporter ++
|
||||
(if (SysProp.taskTimings) new TaskTimings(reportOnShutdown = false) :: Nil else Nil)
|
||||
// configure the logger for super shell
|
||||
ConsoleAppender.setShowProgress((reporters collect {
|
||||
case p: TaskProgress => ()
|
||||
}).nonEmpty)
|
||||
reporters match {
|
||||
case xs if xs.isEmpty => ExecuteProgress.empty[Task]
|
||||
case xs if xs.size == 1 => xs.head
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import sbt.internal.inc.ScalaInstance
|
|||
import sbt.internal.io.WatchState
|
||||
import sbt.internal.librarymanagement.{ CompatibilityWarningOptions, IvySbt }
|
||||
import sbt.internal.server.ServerHandler
|
||||
import sbt.internal.util.{ AttributeKey, SourcePosition }
|
||||
import sbt.internal.util.{ AttributeKey, ProgressState, SourcePosition }
|
||||
import sbt.io._
|
||||
import sbt.librarymanagement.Configurations.CompilerPlugin
|
||||
import sbt.librarymanagement.LibraryManagementCodec._
|
||||
|
|
@ -484,6 +484,7 @@ object Keys {
|
|||
val turbo = settingKey[Boolean]("Enables (true) or disables optional performance features.")
|
||||
// This key can be used to add custom ExecuteProgress instances
|
||||
val progressReports = settingKey[Seq[TaskProgress]]("A function that returns a list of progress reporters.").withRank(DTask)
|
||||
private[sbt] val progressState = settingKey[Option[ProgressState]]("The optional progress state if supershell is enabled.").withRank(Invisible)
|
||||
private[sbt] val postProgressReports = settingKey[Unit]("Internally used to modify logger.").withRank(DTask)
|
||||
@deprecated("No longer used", "1.3.0")
|
||||
private[sbt] val executeProgress = settingKey[State => TaskProgress]("Experimental task execution listener.").withRank(DTask)
|
||||
|
|
|
|||
|
|
@ -140,7 +140,12 @@ object LogManager {
|
|||
val screenTrace = getOr(traceLevel.key, data, scope, state, defaultTraceLevel(state))
|
||||
val backingTrace = getOr(persistTraceLevel.key, data, scope, state, Int.MaxValue)
|
||||
val extraBacked = state.globalLogging.backed :: relay :: Nil
|
||||
val ps = Project.extract(state).get(sbt.Keys.progressState in ThisBuild)
|
||||
val consoleOpt = consoleLocally(state, console)
|
||||
consoleOpt foreach {
|
||||
case a: ConsoleAppender => ps.foreach(a.setProgressState)
|
||||
case _ =>
|
||||
}
|
||||
val config = MainAppender.MainAppenderConfig(
|
||||
consoleOpt,
|
||||
backed,
|
||||
|
|
|
|||
|
|
@ -91,6 +91,7 @@ object SysProp {
|
|||
def supershell: Boolean = booleanOpt("sbt.supershell").getOrElse(color)
|
||||
|
||||
def supershellSleep: Long = long("sbt.supershell.sleep", 100L)
|
||||
def supershellBlankZone: Int = int("sbt.supershell.blankzone", 5)
|
||||
|
||||
def defaultUseCoursier: Boolean = {
|
||||
val coursierOpt = booleanOpt("sbt.coursier")
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ object Dependencies {
|
|||
|
||||
// sbt modules
|
||||
private val ioVersion = nightlyVersion.getOrElse("1.3.0-M17")
|
||||
private val utilVersion = nightlyVersion.getOrElse("1.3.0-M12")
|
||||
private val utilVersion = nightlyVersion.getOrElse("1.3.0")
|
||||
private val lmVersion =
|
||||
sys.props.get("sbt.build.lm.version") match {
|
||||
case Some(version) => version
|
||||
|
|
|
|||
Loading…
Reference in New Issue