1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 00:17:11 -07:00

Fix bug when depending on an Android project.

generateR doesn't appear in the selected tasks but is then still a dependency, which causes an NPE.
This commit is contained in:
Cedric Beust 2015-11-20 17:08:17 -08:00
parent 48c2c7d023
commit df6d639e0a

View file

@ -54,6 +54,10 @@ public class TaskManager @Inject constructor(val plugins: Plugins, val args: Arg
AsciiArt.logBox("Building project ${project.name}") AsciiArt.logBox("Building project ${project.name}")
log(2, "Tasks:")
tasksByNames.keys.forEach {
log(2, " $it: " + tasksByNames.get(it))
}
val graph = DynamicGraph<PluginTask>() val graph = DynamicGraph<PluginTask>()
taskNames.forEach { taskName -> taskNames.forEach { taskName ->
val ti = TaskInfo(taskName) val ti = TaskInfo(taskName)
@ -96,7 +100,7 @@ public class TaskManager @Inject constructor(val plugins: Plugins, val args: Arg
if (to != null) { if (to != null) {
graph.addEdge(pluginTask, to) graph.addEdge(pluginTask, to)
} else { } else {
throw KobaltException("Should have found $it") log(2, "Couldn't find node $it: not applicable to project ${project.name}")
} }
} }
} }
@ -174,14 +178,13 @@ public class TaskManager @Inject constructor(val plugins: Plugins, val args: Arg
toProcess.forEach { target -> toProcess.forEach { target ->
val currentTask = TaskInfo(project.name, target.taskName) val currentTask = TaskInfo(project.name, target.taskName)
transitiveClosure.add(tasksByNames[currentTask.taskName]!!) log(2, "Trying to look up ${currentTask.taskName} in the tasks")
val thisTask = tasksByNames[target.taskName] val thisTask = tasksByNames[currentTask.taskName]
if (thisTask == null) { if (thisTask != null) {
throw KobaltException("Unknown task: $target") transitiveClosure.add(thisTask)
} else {
val dependencyNames = runBefore.get(thisTask.name) val dependencyNames = runBefore.get(thisTask.name)
dependencyNames.forEach { dependencyName -> dependencyNames.forEach { dependencyName ->
if (! seen.contains(dependencyName)) { if (!seen.contains(dependencyName)) {
newToProcess.add(currentTask) newToProcess.add(currentTask)
seen.add(dependencyName) seen.add(dependencyName)
} }
@ -190,6 +193,8 @@ public class TaskManager @Inject constructor(val plugins: Plugins, val args: Arg
dependencyNames.forEach { dependencyNames.forEach {
newToProcess.add(TaskInfo(project.name, it)) newToProcess.add(TaskInfo(project.name, it))
} }
} else {
log(2, "Couldn't find task ${currentTask.taskName}: not applicable to project ${project.name}")
} }
} }
done = newToProcess.isEmpty() done = newToProcess.isEmpty()