mirror of https://github.com/sbt/sbt.git
refs #17: color errors red in tree output
This commit is contained in:
parent
cb3fc03dbc
commit
83ac2e62ab
|
|
@ -21,16 +21,18 @@ import java.io.File
|
|||
import collection.mutable.HashMap
|
||||
import collection.mutable.MultiMap
|
||||
import collection.mutable.{Set => MSet}
|
||||
import sbt.Graph
|
||||
import sbt.{ConsoleLogger, Graph}
|
||||
import xml.{Document, XML, Node}
|
||||
import com.github.mdr.ascii.layout
|
||||
import layout._
|
||||
import sbinary.{CollectionTypes, Format, DefaultProtocol}
|
||||
import sbinary.{Format, DefaultProtocol}
|
||||
|
||||
object IvyGraphMLDependencies extends App {
|
||||
case class Module(organisation: String, name: String, version: String, error: Option[String] = None) {
|
||||
def id: String = organisation+":"+name+":"+version
|
||||
|
||||
def hadError: Boolean = error.isDefined
|
||||
|
||||
override def hashCode(): Int = id.hashCode
|
||||
override def equals(p1: Any): Boolean = p1 match {
|
||||
case m: Module => id == m.id
|
||||
|
|
@ -97,14 +99,17 @@ object IvyGraphMLDependencies extends App {
|
|||
// there should only be one root node (the project itself)
|
||||
val roots = graph.nodes.filter(n => !graph.edges.exists(_._2 == n)).sortBy(_.id)
|
||||
roots.map { root =>
|
||||
Graph.toAscii[Module](root, node => deps.getOrElse(node, Seq.empty[Module]), x => x.id + x.error.map(" (error: "+_+")").getOrElse(""))
|
||||
Graph.toAscii[Module](root, node => deps.getOrElse(node, Seq.empty[Module]), displayModule)
|
||||
}.mkString("\n")
|
||||
}
|
||||
|
||||
def displayModule(module: Module): String =
|
||||
red(module.id + module.error.map(" (error: "+_+")").getOrElse(""), module.hadError)
|
||||
|
||||
private def buildAsciiGraph(moduleGraph: ModuleGraph): layout.Graph[String] = {
|
||||
def renderVertex(module: Module): String = {
|
||||
def renderVertex(module: Module): String =
|
||||
module.name + "\n" + module.organisation + "\n" + module.version
|
||||
}
|
||||
|
||||
val vertices = moduleGraph.nodes.map(renderVertex).toList
|
||||
val edges = moduleGraph.edges.toList.map { case (from, to) ⇒ (renderVertex(from), renderVertex(to)) }
|
||||
layout.Graph(vertices, edges)
|
||||
|
|
@ -143,6 +148,12 @@ object IvyGraphMLDependencies extends App {
|
|||
|
||||
private def buildDoc(ivyReportFile: String) = ConstructingParser.fromSource(io.Source.fromFile(ivyReportFile), false).document
|
||||
|
||||
def red(str: String, doRed: Boolean): String =
|
||||
if (ConsoleLogger.formatEnabled && doRed)
|
||||
Console.RED + str + Console.RESET
|
||||
else
|
||||
str
|
||||
|
||||
def die(msg: String): Nothing = {
|
||||
println(msg)
|
||||
sys.exit(1)
|
||||
|
|
|
|||
Loading…
Reference in New Issue