mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-26 16:28:12 -07:00
Display task timings in --log 2.
This commit is contained in:
parent
82d6faa54f
commit
0e90561c8f
2 changed files with 27 additions and 16 deletions
|
@ -7,6 +7,7 @@ import com.beust.kobalt.api.PluginTask
|
|||
import com.beust.kobalt.api.Project
|
||||
import com.beust.kobalt.api.annotation.IncrementalTask
|
||||
import com.beust.kobalt.api.annotation.Task
|
||||
import com.beust.kobalt.misc.benchmarkMillis
|
||||
import com.beust.kobalt.misc.log
|
||||
import com.google.common.collect.ArrayListMultimap
|
||||
import com.google.common.collect.Multimap
|
||||
|
@ -46,8 +47,11 @@ public class TaskManager @Inject constructor(val args: Args, val incrementalMana
|
|||
fun matches(projectName: String) = project == null || project == projectName
|
||||
}
|
||||
|
||||
public fun runTargets(taskNames: List<String>, projects: List<Project>) : Int {
|
||||
class RunTargetResult(val exitCode: Int, val messages: List<String>)
|
||||
|
||||
public fun runTargets(taskNames: List<String>, projects: List<Project>) : RunTargetResult {
|
||||
var result = 0
|
||||
val messages = Collections.synchronizedList(arrayListOf<String>())
|
||||
projects.forEach { project ->
|
||||
val projectName = project.name
|
||||
// There can be multiple tasks by the same name (e.g. PackagingPlugin and AndroidPlugin both
|
||||
|
@ -139,9 +143,13 @@ public class TaskManager @Inject constructor(val args: Args, val incrementalMana
|
|||
|
||||
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(arrayListOf(it), args.dryRun))
|
||||
thisResult.add(TaskWorker(listOf(it), args.dryRun, messages))
|
||||
}
|
||||
return thisResult
|
||||
}
|
||||
|
@ -154,7 +162,7 @@ public class TaskManager @Inject constructor(val args: Args, val incrementalMana
|
|||
}
|
||||
|
||||
}
|
||||
return result
|
||||
return RunTargetResult(result, messages)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -319,15 +327,12 @@ public class TaskManager @Inject constructor(val args: Args, val incrementalMana
|
|||
}
|
||||
|
||||
//
|
||||
//
|
||||
// Manage the tasks
|
||||
/////
|
||||
|
||||
}
|
||||
|
||||
class TaskWorker(val tasks: List<PluginTask>, val dryRun: Boolean) : IWorker<PluginTask> {
|
||||
// override fun compareTo(other: IWorker2<PluginTask>): Int {
|
||||
// return priority.compareTo(other.priority)
|
||||
// }
|
||||
class TaskWorker(val tasks: List<PluginTask>, val dryRun: Boolean, val messages: MutableList<String>)
|
||||
: IWorker<PluginTask> {
|
||||
|
||||
override fun call() : TaskResult2<PluginTask> {
|
||||
if (tasks.size > 0) {
|
||||
|
@ -338,10 +343,14 @@ class TaskWorker(val tasks: List<PluginTask>, val dryRun: Boolean) : IWorker<Plu
|
|||
var success = true
|
||||
val errorMessages = arrayListOf<String>()
|
||||
tasks.forEach {
|
||||
val name = it.project.name + ":" + it.name
|
||||
val time = benchmarkMillis {
|
||||
val tr = if (dryRun) TaskResult() else it.call()
|
||||
success = success and tr.success
|
||||
if (tr.errorMessage != null) errorMessages.add(tr.errorMessage)
|
||||
}
|
||||
messages.add("$name: $time ms")
|
||||
}
|
||||
return TaskResult2(success, errorMessages.joinToString("\n"), tasks[0])
|
||||
}
|
||||
|
||||
|
|
|
@ -94,7 +94,7 @@ private class Main @Inject constructor(
|
|||
|
||||
var result = 0
|
||||
val latestVersionFuture = github.latestKobaltVersion
|
||||
val seconds = benchmark {
|
||||
val seconds = benchmarkSeconds {
|
||||
try {
|
||||
result = runWithArgs(jc, args, argv)
|
||||
} catch(ex: KobaltException) {
|
||||
|
@ -195,10 +195,12 @@ private class Main @Inject constructor(
|
|||
//
|
||||
// Launch the build
|
||||
//
|
||||
val thisResult = taskManager.runTargets(args.targets, allProjects)
|
||||
val runTargetResult = taskManager.runTargets(args.targets, allProjects)
|
||||
if (result == 0) {
|
||||
result = thisResult
|
||||
result = runTargetResult.exitCode
|
||||
}
|
||||
|
||||
log(2, "Timings:\n " + runTargetResult.messages.joinToString("\n "))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue