mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-27 00:38:11 -07:00
TaskManagerTest.
This commit is contained in:
parent
114a75b0fb
commit
c9e595a3a0
2 changed files with 36 additions and 7 deletions
|
@ -24,6 +24,7 @@ import javax.inject.Singleton
|
|||
public class TaskManager @Inject constructor(val args: Args,
|
||||
val incrementalManagerFactory: IncrementalManager.IFactory) {
|
||||
private val runBefore = TreeMultimap.create<String, String>()
|
||||
private val runAfter = TreeMultimap.create<String, String>()
|
||||
private val alwaysRunAfter = TreeMultimap.create<String, String>()
|
||||
|
||||
/**
|
||||
|
@ -37,6 +38,10 @@ public class TaskManager @Inject constructor(val args: Args,
|
|||
runBefore.put(task1, task2)
|
||||
}
|
||||
|
||||
fun runAfter(task1: String, task2: String) {
|
||||
runAfter.put(task1, task2)
|
||||
}
|
||||
|
||||
fun alwaysRunAfter(task1: String, task2: String) {
|
||||
alwaysRunAfter.put(task1, task2)
|
||||
}
|
||||
|
@ -89,7 +94,7 @@ public class TaskManager @Inject constructor(val args: Args,
|
|||
}
|
||||
|
||||
val graph = createGraph(project.name, taskNames, tasksByNames,
|
||||
runBefore, alwaysRunAfter,
|
||||
runBefore, runAfter, alwaysRunAfter,
|
||||
{ task: PluginTask -> task.name },
|
||||
{ task: PluginTask -> task.plugin.accept(project) })
|
||||
|
||||
|
@ -120,6 +125,7 @@ public class TaskManager @Inject constructor(val args: Args,
|
|||
@VisibleForTesting
|
||||
fun <T> createGraph(projectName: String, taskNames: List<String>, dependencies: Multimap<String, T>,
|
||||
runBefore: TreeMultimap<String, String>,
|
||||
runAfter: TreeMultimap<String, String>,
|
||||
alwaysRunAfter: TreeMultimap<String, String>,
|
||||
toName: (T) -> String,
|
||||
accept: (T) -> Boolean):
|
||||
|
@ -173,14 +179,29 @@ public class TaskManager @Inject constructor(val args: Args,
|
|||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Add all the runAfter nodes if applicable
|
||||
//
|
||||
graph.nodes.forEach { node ->
|
||||
val ra = runAfter[toName(node)]
|
||||
ra.forEach { o ->
|
||||
dependencies[o].forEach {
|
||||
if (o != null) {
|
||||
graph.addEdge(it, node)
|
||||
}
|
||||
}
|
||||
}
|
||||
println("RA: $ra")
|
||||
}
|
||||
|
||||
//
|
||||
// If any of the nodes in the graph has an "alwaysRunAfter", add that edge too
|
||||
//
|
||||
val allNodes = arrayListOf<T>()
|
||||
allNodes.addAll(graph.nodes)
|
||||
allNodes.forEach { node ->
|
||||
val other = alwaysRunAfter.get(toName(node))
|
||||
other?.forEach { o ->
|
||||
val ra = alwaysRunAfter[toName(node)]
|
||||
ra?.forEach { o ->
|
||||
dependencies[o]?.forEach {
|
||||
graph.addEdge(it, node)
|
||||
}
|
||||
|
@ -350,7 +371,7 @@ public class TaskManager @Inject constructor(val args: Args,
|
|||
}
|
||||
})
|
||||
runBefore.forEach { runBefore(it, name) }
|
||||
runAfter.forEach { runBefore(name, it) }
|
||||
runAfter.forEach { runAfter(it, name) }
|
||||
alwaysRunAfter.forEach { alwaysRunAfter(it, name)}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue