summaryrefslogtreecommitdiff
path: root/main/graphviz
diff options
context:
space:
mode:
Diffstat (limited to 'main/graphviz')
-rw-r--r--main/graphviz/src/mill/main/graphviz/GraphvizTools.scala12
1 files changed, 9 insertions, 3 deletions
diff --git a/main/graphviz/src/mill/main/graphviz/GraphvizTools.scala b/main/graphviz/src/mill/main/graphviz/GraphvizTools.scala
index 300bd98a..4e8c59ce 100644
--- a/main/graphviz/src/mill/main/graphviz/GraphvizTools.scala
+++ b/main/graphviz/src/mill/main/graphviz/GraphvizTools.scala
@@ -1,17 +1,18 @@
package mill.main.graphviz
import ammonite.ops.Path
+import guru.nidi.graphviz.attribute.Style
import mill.define.{Graph, NamedTask}
import org.jgrapht.graph.{DefaultEdge, SimpleDirectedGraph}
object GraphvizTools{
- def apply(rs: Seq[NamedTask[Any]], dest: Path) = {
+ def apply(targets: Seq[NamedTask[Any]], rs: Seq[NamedTask[Any]], dest: Path) = {
val transitive = Graph.transitiveTargets(rs.distinct)
val topoSorted = Graph.topoSorted(transitive)
val goalSet = rs.toSet
val sortedGroups = Graph.groupAroundImportantTargets(topoSorted){
case x: NamedTask[Any] if goalSet.contains(x) => x
}
- import guru.nidi.graphviz.model.Factory._
import guru.nidi.graphviz.engine.{Format, Graphviz}
+ import guru.nidi.graphviz.model.Factory._
val edgesIterator =
for((k, vs) <- sortedGroups.items())
@@ -38,7 +39,12 @@ object GraphvizTools{
org.jgrapht.alg.TransitiveReduction.INSTANCE.reduce(jgraph)
- val nodes = indexToTask.map(t => node(t.ctx.segments.render))
+ val nodes = indexToTask.map(t =>
+ node(t.ctx.segments.render).`with`{
+ if(targets.contains(t)) Style.SOLID
+ else Style.DOTTED
+ }
+ )
var g = graph("example1").directed
for(i <- indexToTask.indices){