You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.0 KiB
Groovy
82 lines
2.0 KiB
Groovy
package org.xbib.gradle.plugin.shadow
|
|
|
|
import groovy.util.logging.Log
|
|
import org.gradle.api.GradleException
|
|
|
|
@Log
|
|
class ShadowStats {
|
|
|
|
long totalTime
|
|
long jarStartTime
|
|
long jarEndTime
|
|
int jarCount = 1
|
|
boolean processingJar
|
|
Map<String, String> relocations = [:]
|
|
|
|
void relocate(String src, String dst) {
|
|
relocations[src] = dst
|
|
}
|
|
|
|
String getRelocationString() {
|
|
def maxLength = relocations.keySet().collect { it.length() }.max()
|
|
relocations.collect { k, v -> "${k} ${separator(k, maxLength)} ${v}"}.sort().join("\n")
|
|
}
|
|
|
|
String separator(String key, int max) {
|
|
return "→"
|
|
}
|
|
|
|
void startJar() {
|
|
if (processingJar) throw new GradleException("Can only time one entry at a time")
|
|
processingJar = true
|
|
jarStartTime = System.currentTimeMillis()
|
|
}
|
|
|
|
void finishJar() {
|
|
if (processingJar) {
|
|
jarEndTime = System.currentTimeMillis()
|
|
jarCount++
|
|
totalTime += jarTiming
|
|
processingJar = false
|
|
}
|
|
}
|
|
|
|
void printStats() {
|
|
println this
|
|
}
|
|
|
|
long getJarTiming() {
|
|
jarEndTime - jarStartTime
|
|
}
|
|
|
|
double getTotalTimeSecs() {
|
|
totalTime / 1000
|
|
}
|
|
|
|
double getAverageTimePerJar() {
|
|
totalTime / jarCount
|
|
}
|
|
|
|
double getAverageTimeSecsPerJar() {
|
|
averageTimePerJar / 1000
|
|
}
|
|
|
|
String toString() {
|
|
StringBuilder sb = new StringBuilder()
|
|
sb.append "*******************\n"
|
|
sb.append "GRADLE SHADOW STATS\n"
|
|
sb.append "\n"
|
|
sb.append "Total Jars: $jarCount (includes project)\n"
|
|
sb.append "Total Time: ${totalTimeSecs}s [${totalTime}ms]\n"
|
|
sb.append "Average Time/Jar: ${averageTimeSecsPerJar}s [${averageTimePerJar}ms]\n"
|
|
sb.append "*******************"
|
|
}
|
|
|
|
Map<String, String> getBuildScanData() {
|
|
[
|
|
dependencies: jarCount,
|
|
relocations: relocationString
|
|
]
|
|
}
|
|
}
|