Skip to content

Commit

Permalink
Merge pull request #29 from asarkar/issue-27
Browse files Browse the repository at this point in the history
issue-27: Support parallel builds
  • Loading branch information
asarkar authored Jul 23, 2021
2 parents 324e68b + e152acc commit ea59e2a
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 12 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ pluginImplementationClass = com.asarkar.gradle.buildtimetracker.BuildTimeTracker
pluginDeclarationName = buildTimeTrackerPlugin

projectGroup = com.asarkar.gradle
projectVersion = 3.0.0
projectVersion = 3.0.1

junitVersion = latest.release
assertjVersion = latest.release
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import kotlin.math.round

data class PrinterInput(
val buildDuration: Long,
val taskDurations: List<Pair<String, Long>>,
val taskDurations: Collection<Pair<String, Long>>,
val maxWidth: Int,
val showBars: Boolean,
val barPosition: BarPosition
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,21 @@ import org.gradle.api.reflect.TypeOf
import org.gradle.api.tasks.TaskState
import java.time.Duration
import java.time.Instant
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.ConcurrentLinkedQueue

class TimingRecorder(private val ext: BuildTimeTrackerPluginExtension) : TaskExecutionListener, BuildAdapter() {
private lateinit var taskStarted: Instant
private val taskStartTimings: MutableMap<String, Instant> = ConcurrentHashMap()
private val taskDurations: MutableCollection<Pair<String, Long>> = ConcurrentLinkedQueue()
private lateinit var buildStarted: Instant
private val taskDurations = mutableListOf<Pair<String, Long>>()

override fun beforeExecute(task: Task) {
taskStarted = Instant.now()
taskStartTimings[task.path] = Instant.now()
}

override fun afterExecute(task: Task, state: TaskState) {
val duration = Duration.between(taskStarted, Instant.now()).seconds
check(taskStartTimings.contains(task.path)) { "No start timing for task ${task.path}" }
val duration = Duration.between(taskStartTimings[task.path], Instant.now()).seconds
if (duration >= ext.minTaskDuration.get().seconds) {
taskDurations.add(task.path to duration)
}
Expand All @@ -40,19 +43,16 @@ class TimingRecorder(private val ext: BuildTimeTrackerPluginExtension) : TaskExe
return
}
val buildDuration = Duration.between(buildStarted, Instant.now()).seconds
if (ext.sort.get()) {
taskDurations.sortBy { -it.second }
}
Printer.newInstance(ext)
.use {
.use { printer ->
val input = PrinterInput(
buildDuration,
taskDurations,
if (ext.sort.get()) taskDurations.sortedBy { -it.second } else taskDurations,
ext.maxWidth.get(),
ext.showBars.get(),
ext.barPosition.get()
)
it.print(input)
printer.print(input)
}
}

Expand Down

0 comments on commit ea59e2a

Please sign in to comment.