in caches-cleanup-plugin-agent/src/main/kotlin/github/nskvortsov/teamcity/cleanup/SimpleCleanerProviders.kt [43:101]
override fun registerDirectoryCleaners(context: DirectoryCleanersProviderContext, registry: DirectoryCleanersRegistry) {
log.debug("Gradle cleaner: register dir cleaners")
val disabled = context.hasExplicitFalse("teamcity.cleaners.gradle.enabled")
if (disabled) {
log.info("Gradle cleaner is disabled, skipping")
return
}
System.getProperty("user.home")?.let {
val gradleCache = File(it + "/.gradle/caches")
log.debug("Checking if [${gradleCache.absolutePath}] exists")
if (gradleCache.exists()) {
log.debug("Gradle cache found, registering cleaner.")
registry.addCleaner(gradleCache, Date(), Cleaner(gradleCache, log))
}
val wrapperCache = File(it + "/.gradle/wrapper/dists")
log.debug("Checking if [${wrapperCache.absolutePath}] exists")
if (wrapperCache.exists()) {
log.debug("Gradle wrapper distributions found, registering cleaner.")
registry.addCleaner(wrapperCache, Date(), Cleaner(wrapperCache, log))
}
val daemonLogs = File(it + "/.gradle/daemon")
log.debug("Looking for Gradle daemon logs.")
var count = 0
val now = TimeService.now()
(daemonLogs.listFiles() ?: emptyArray()).filter { dir -> dir.isDirectory }.forEach { dir ->
val isLogFile: (File) -> Boolean = { file -> file.name.endsWith("out.log") }
val logs = (dir.listFiles() ?: emptyArray()).filter(isLogFile)
// Let's split logs and register several cleaners:
// * older than 7 days
// * older than 1 day
// * older than 12 hours
// * each one else as separate cleaner
val groups = splitLogFiles(logs, now)
@Suppress("NAME_SHADOWING")
for ((type, logs) in groups.entries) {
if (type == LogAge.FRESH) {
// register each file separately
logs.forEach { log ->
registry.addCleaner(log, Date(log.lastModified()), LogFileCleaner(log, dir))
}
} else {
// register group
registry.addCleaner(dir, Date(now - type.millis), LogGroupCleaner(logs, dir))
}
}
if (groups.isNotEmpty()) {
count++
}
}
log.debug("Finished, found and registered for cleaning $count daemon directories")
}
}