mirror of https://github.com/sbt/sbt.git
display relative key strings for incomplete tasks
This commit is contained in:
parent
1f612aaecb
commit
f4c0a0d9a6
|
|
@ -83,8 +83,8 @@ object EvaluateTask
|
|||
for( (task, toNode) <- getTask(structure, taskKey, state, str, ref) ) yield
|
||||
runTask(task, state, str, structure.index.triggers, config)(toNode)
|
||||
}
|
||||
def logIncResult(result: Result[_], streams: Streams) = result match { case Inc(i) => logIncomplete(i, streams); case _ => () }
|
||||
def logIncomplete(result: Incomplete, streams: Streams)
|
||||
def logIncResult(result: Result[_], state: State, streams: Streams) = result match { case Inc(i) => logIncomplete(i, state, streams); case _ => () }
|
||||
def logIncomplete(result: Incomplete, state: State, streams: Streams)
|
||||
{
|
||||
val all = Incomplete linearize result
|
||||
val keyed = for(Incomplete(Some(key: Project.ScopedKey[_]), _, msg, _, ex) <- all) yield (key, msg, ex)
|
||||
|
|
@ -96,8 +96,8 @@ object EvaluateTask
|
|||
{
|
||||
val msgString = (msg.toList ++ ex.toList.map(ErrorHandling.reducedToString)).mkString("\n\t")
|
||||
val log = getStreams(key, streams).log
|
||||
val keyString = if(log.ansiCodesSupported) RED + key.key.label + RESET else key.key.label
|
||||
log.error(Scope.display(key.scope, keyString) + ": " + msgString)
|
||||
val display = Project.showContextKey(state, if(log.ansiCodesSupported) Some(scala.Console.RED) else None)
|
||||
log.error("(" + display(key) + ") " + msgString)
|
||||
}
|
||||
}
|
||||
def getStreams(key: ScopedKey[_], streams: Streams): TaskStreams =
|
||||
|
|
@ -134,7 +134,7 @@ object EvaluateTask
|
|||
catch { case inc: Incomplete => (state, Inc(inc)) }
|
||||
finally shutdown()
|
||||
val replaced = transformInc(result)
|
||||
logIncResult(replaced, streams)
|
||||
logIncResult(replaced, state, streams)
|
||||
(newState, replaced)
|
||||
}
|
||||
val cancel = () => {
|
||||
|
|
|
|||
|
|
@ -110,13 +110,24 @@ final case class ClasspathDependency(project: ProjectReference, configuration: O
|
|||
|
||||
object Project extends Init[Scope] with ProjectExtra
|
||||
{
|
||||
lazy val showFullKey: Show[ScopedKey[_]] = new Show[ScopedKey[_]] { def apply(key: ScopedKey[_]) = displayFull(key) }
|
||||
lazy val showFullKey: Show[ScopedKey[_]] = showFullKey(None)
|
||||
def showFullKey(keyNameColor: Option[String]): Show[ScopedKey[_]] =
|
||||
new Show[ScopedKey[_]] { def apply(key: ScopedKey[_]) = displayFull(key, keyNameColor) }
|
||||
def showContextKey(state: State): Show[ScopedKey[_]] =
|
||||
if(isProjectLoaded(state)) showContextKey( session(state), structure(state) ) else showFullKey
|
||||
def showContextKey(session: SessionSettings, structure: BuildStructure): Show[ScopedKey[_]] = showRelativeKey(session.current, structure.allProjects.size > 1)
|
||||
def showLoadingKey(loaded: Load.LoadedBuild): Show[ScopedKey[_]] = showRelativeKey( ProjectRef(loaded.root, loaded.units(loaded.root).rootProjects.head), loaded.allProjectRefs.size > 1 )
|
||||
def showRelativeKey(current: ProjectRef, multi: Boolean): Show[ScopedKey[_]] = new Show[ScopedKey[_]] {
|
||||
def apply(key: ScopedKey[_]) = Scope.display(key.scope, key.key.label, ref => displayRelative(current, multi, ref))
|
||||
showContextKey(state, None)
|
||||
|
||||
def showContextKey(state: State, keyNameColor: Option[String]): Show[ScopedKey[_]] =
|
||||
if(isProjectLoaded(state)) showContextKey( session(state), structure(state), keyNameColor ) else showFullKey
|
||||
|
||||
def showContextKey(session: SessionSettings, structure: BuildStructure, keyNameColor: Option[String] = None): Show[ScopedKey[_]] =
|
||||
showRelativeKey(session.current, structure.allProjects.size > 1, keyNameColor)
|
||||
|
||||
def showLoadingKey(loaded: Load.LoadedBuild, keyNameColor: Option[String] = None): Show[ScopedKey[_]] =
|
||||
showRelativeKey( ProjectRef(loaded.root, loaded.units(loaded.root).rootProjects.head), loaded.allProjectRefs.size > 1, keyNameColor)
|
||||
|
||||
def showRelativeKey(current: ProjectRef, multi: Boolean, keyNameColor: Option[String] = None): Show[ScopedKey[_]] = new Show[ScopedKey[_]] {
|
||||
def apply(key: ScopedKey[_]) =
|
||||
Scope.display(key.scope, colored(key.key.label, keyNameColor), ref => displayRelative(current, multi, ref))
|
||||
}
|
||||
def displayRelative(current: ProjectRef, multi: Boolean, project: Reference): String = project match {
|
||||
case BuildRef(current.build) => "{.}/"
|
||||
|
|
@ -215,7 +226,12 @@ object Project extends Init[Scope] with ProjectExtra
|
|||
def equal(a: ScopedKey[_], b: ScopedKey[_], mask: ScopeMask): Boolean =
|
||||
a.key == b.key && Scope.equal(a.scope, b.scope, mask)
|
||||
|
||||
def displayFull(scoped: ScopedKey[_]): String = Scope.display(scoped.scope, scoped.key.label)
|
||||
def colored(s: String, color: Option[String]): String = color match {
|
||||
case Some(c) => c + s + scala.Console.RESET
|
||||
case None => s
|
||||
}
|
||||
def displayFull(scoped: ScopedKey[_]): String = displayFull(scoped, None)
|
||||
def displayFull(scoped: ScopedKey[_], keyNameColor: Option[String]): String = Scope.display(scoped.scope, colored(scoped.key.label, keyNameColor))
|
||||
def displayMasked(scoped: ScopedKey[_], mask: ScopeMask): String = Scope.displayMasked(scoped.scope, scoped.key.label, mask)
|
||||
def display(ref: Reference): String =
|
||||
ref match
|
||||
|
|
|
|||
Loading…
Reference in New Issue