mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-27 00:38:11 -07:00
Extract graph calculation.
This commit is contained in:
parent
63bd66cb02
commit
4ed2183dbd
1 changed files with 74 additions and 66 deletions
|
@ -86,6 +86,44 @@ public class TaskManager @Inject constructor(val args: Args, val incrementalMana
|
|||
tasksByNames.keys().forEach {
|
||||
log(3, " $it: " + tasksByNames.get(it))
|
||||
}
|
||||
|
||||
val graph = createGraph(project, taskNames, tasksByNames)
|
||||
|
||||
//
|
||||
// Now that we have a full graph, run it
|
||||
//
|
||||
log(1, "About to run graph:\n ${graph.dump()} ")
|
||||
|
||||
val factory = object : IThreadWorkerFactory<PluginTask> {
|
||||
override public fun createWorkers(nodes: List<PluginTask>): List<IWorker<PluginTask>> {
|
||||
// val tr = nodes.reduce { workers: List<TaskWorker>, node: PluginTask ->
|
||||
// val result: List<TaskWorker> = workers + TaskWorker(listOf(node), args.dryRun, messages)
|
||||
// result
|
||||
// }
|
||||
val thisResult = arrayListOf<IWorker<PluginTask>>()
|
||||
nodes.forEach {
|
||||
thisResult.add(TaskWorker(listOf(it), args.dryRun, messages))
|
||||
}
|
||||
return thisResult
|
||||
}
|
||||
}
|
||||
|
||||
val executor = DynamicGraphExecutor(graph, factory)
|
||||
val thisResult = executor.run()
|
||||
if (thisResult != 0) {
|
||||
log(2, "Marking project ${project.name} as failed")
|
||||
failedProjects.add(project.name)
|
||||
}
|
||||
if (result == 0) {
|
||||
result = thisResult
|
||||
}
|
||||
}
|
||||
}
|
||||
return RunTargetResult(result, messages)
|
||||
}
|
||||
|
||||
private fun createGraph(project: Project, taskNames: List<String>, tasksByNames: Multimap<String, PluginTask>):
|
||||
DynamicGraph<PluginTask> {
|
||||
val graph = DynamicGraph<PluginTask>()
|
||||
taskNames.forEach { taskName ->
|
||||
val ti = TaskInfo(taskName)
|
||||
|
@ -93,7 +131,7 @@ public class TaskManager @Inject constructor(val args: Args, val incrementalMana
|
|||
throw KobaltException("Unknown task: $taskName")
|
||||
}
|
||||
|
||||
if (ti.matches(projectName)) {
|
||||
if (ti.matches(project.name)) {
|
||||
tasksByNames[ti.taskName].forEach { task ->
|
||||
if (task != null && task.plugin.accept(project)) {
|
||||
val reverseAfter = hashMapOf<String, String>()
|
||||
|
@ -109,7 +147,7 @@ public class TaskManager @Inject constructor(val args: Args, val incrementalMana
|
|||
//
|
||||
val allFreeTasks = calculateFreeTasks(tasksByNames, reverseAfter)
|
||||
val currentFreeTask = allFreeTasks.filter {
|
||||
TaskInfo(projectName, it.name).taskName == task.name
|
||||
TaskInfo(project.name, it.name).taskName == task.name
|
||||
}
|
||||
if (currentFreeTask.size == 1) {
|
||||
currentFreeTask[0].let {
|
||||
|
@ -153,37 +191,7 @@ public class TaskManager @Inject constructor(val args: Args, val incrementalMana
|
|||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Now that we have a full graph, run it
|
||||
//
|
||||
log(3, "About to run graph:\n ${graph.dump()} ")
|
||||
|
||||
val factory = object : IThreadWorkerFactory<PluginTask> {
|
||||
override public fun createWorkers(nodes: List<PluginTask>): List<IWorker<PluginTask>> {
|
||||
// val tr = nodes.reduce { workers: List<TaskWorker>, node: PluginTask ->
|
||||
// val result: List<TaskWorker> = workers + TaskWorker(listOf(node), args.dryRun, messages)
|
||||
// result
|
||||
// }
|
||||
val thisResult = arrayListOf<IWorker<PluginTask>>()
|
||||
nodes.forEach {
|
||||
thisResult.add(TaskWorker(listOf(it), args.dryRun, messages))
|
||||
}
|
||||
return thisResult
|
||||
}
|
||||
}
|
||||
|
||||
val executor = DynamicGraphExecutor(graph, factory)
|
||||
val thisResult = executor.run()
|
||||
if (thisResult != 0) {
|
||||
log(2, "Marking project ${project.name} as failed")
|
||||
failedProjects.add(project.name)
|
||||
}
|
||||
if (result == 0) {
|
||||
result = thisResult
|
||||
}
|
||||
}
|
||||
}
|
||||
return RunTargetResult(result, messages)
|
||||
return graph
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue