1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 00:17:11 -07:00
This commit is contained in:
Cedric Beust 2015-11-16 04:48:22 -08:00
parent 6726edc3cb
commit 2b555cc60b

View file

@ -36,12 +36,12 @@ public class TaskManager @Inject constructor(val plugins: Plugins, val args: Arg
val project: String? val project: String?
get() = if (id.contains(":")) id.split(":")[0] else null get() = if (id.contains(":")) id.split(":")[0] else null
val task: String val taskName: String
get() = if (id.contains(":")) id.split(":")[1] else id get() = if (id.contains(":")) id.split(":")[1] else id
fun matches(projectName: String) = project == null || project == projectName fun matches(projectName: String) = project == null || project == projectName
} }
public fun runTargets(targets: List<String>, projects: List<Project>) : Int { public fun runTargets(taskNames: List<String>, projects: List<Project>) : Int {
var result = 0 var result = 0
projects.forEach { project -> projects.forEach { project ->
val projectName = project.name val projectName = project.name
@ -55,14 +55,14 @@ public class TaskManager @Inject constructor(val plugins: Plugins, val args: Arg
AsciiArt.logBox("Building project ${project.name}") AsciiArt.logBox("Building project ${project.name}")
val graph = DynamicGraph<PluginTask>() val graph = DynamicGraph<PluginTask>()
targets.forEach { target -> taskNames.forEach { taskName ->
val ti = TaskInfo(target) val ti = TaskInfo(taskName)
if (! tasksByNames.contains(ti.task)) { if (! tasksByNames.contains(ti.taskName)) {
throw KobaltException("Unknown task: $target") throw KobaltException("Unknown task: $taskName")
} }
if (ti.matches(projectName)) { if (ti.matches(projectName)) {
val task = tasksByNames[ti.task] val task = tasksByNames[ti.taskName]
if (task != null && task.plugin.accept(project)) { if (task != null && task.plugin.accept(project)) {
val reverseAfter = hashMapOf<String, String>() val reverseAfter = hashMapOf<String, String>()
alwaysRunAfter.keys().forEach { from -> alwaysRunAfter.keys().forEach { from ->
@ -77,7 +77,7 @@ public class TaskManager @Inject constructor(val plugins: Plugins, val args: Arg
// //
val allFreeTasks = calculateFreeTasks(tasksByNames, reverseAfter) val allFreeTasks = calculateFreeTasks(tasksByNames, reverseAfter)
val currentFreeTask = allFreeTasks.filter { val currentFreeTask = allFreeTasks.filter {
TaskInfo(projectName, it.name).task == target TaskInfo(projectName, it.name).taskName == task
} }
if (currentFreeTask.size == 1) { if (currentFreeTask.size == 1) {
currentFreeTask[0].let { currentFreeTask[0].let {
@ -162,10 +162,10 @@ public class TaskManager @Inject constructor(val plugins: Plugins, val args: Arg
* Find the transitive closure for the given TaskInfo * Find the transitive closure for the given TaskInfo
*/ */
private fun calculateTransitiveClosure(project: Project, tasksByNames: Map<String, PluginTask>, ti: TaskInfo): HashSet<PluginTask> { private fun calculateTransitiveClosure(project: Project, tasksByNames: Map<String, PluginTask>, ti: TaskInfo): HashSet<PluginTask> {
log(3, "Processing ${ti.task}") log(3, "Processing ${ti.taskName}")
val transitiveClosure = hashSetOf<PluginTask>() val transitiveClosure = hashSetOf<PluginTask>()
val seen = hashSetOf(ti.task) val seen = hashSetOf(ti.taskName)
val toProcess = hashSetOf(ti) val toProcess = hashSetOf(ti)
var done = false var done = false
while (! done) { while (! done) {
@ -173,9 +173,9 @@ public class TaskManager @Inject constructor(val plugins: Plugins, val args: Arg
log(3, "toProcess size: " + toProcess.size) log(3, "toProcess size: " + toProcess.size)
toProcess.forEach { target -> toProcess.forEach { target ->
val currentTask = TaskInfo(project.name, target.task) val currentTask = TaskInfo(project.name, target.taskName)
transitiveClosure.add(tasksByNames[currentTask.task]!!) transitiveClosure.add(tasksByNames[currentTask.taskName]!!)
val thisTask = tasksByNames[target.task] val thisTask = tasksByNames[target.taskName]
if (thisTask == null) { if (thisTask == null) {
throw KobaltException("Unknown task: $target") throw KobaltException("Unknown task: $target")
} else { } else {