Skip to content

Commit 4d3edc6

Browse files
committed
Refine incremental logs
1. mkdir() before writing logs. In some cases, `build` isn't created by Gradle. 2. Add a timestamp for each build. 3. Move dirty percentage from kspDirtySetByDeps.log to kspDirtySet.log
1 parent 2360958 commit 4d3edc6

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

compiler-plugin/src/main/kotlin/com/google/devtools/ksp/Incremental.kt

+18-11
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,9 @@ class IncrementalContext(
166166

167167
private val baseDir = options.projectBaseDir
168168

169+
private val logsDir = File(baseDir, "build").apply { mkdir() }
170+
private val buildTime = Date().time
171+
169172
private val modified = options.knownModified.map{ it.relativeTo(baseDir) }.toSet()
170173
private val removed = options.knownRemoved.map { it.relativeTo(baseDir) }.toSet()
171174

@@ -262,17 +265,15 @@ class IncrementalContext(
262265
if (!options.incrementalLog)
263266
return
264267

265-
val logFile = File(options.projectBaseDir, "build/kspDirtySetByDeps.log")
266-
logFile.appendText("All Files\n")
267-
ksFiles.forEach { logFile.appendText(" ${it.relativeFile}\n") }
268+
val logFile = File(logsDir, "kspDirtySetByDeps.log")
269+
logFile.appendText("=== Build $buildTime ===\n")
268270
logFile.appendText("Modified\n")
269-
options.knownModified.forEach { logFile.appendText(" $it\n") }
271+
modified.forEach { logFile.appendText(" $it\n") }
270272
logFile.appendText("Removed\n")
271-
options.knownRemoved.forEach { logFile.appendText(" $it\n") }
273+
removed.forEach { logFile.appendText(" $it\n") }
272274
logFile.appendText("Dirty\n")
273275
dirtyFiles.forEach { logFile.appendText(" ${it}\n") }
274-
val percentage = "%.2f".format(dirtyFiles.size.toDouble() / ksFiles.size.toDouble() * 100)
275-
logFile.appendText("\nDirty / All: $percentage%\n\n")
276+
logFile.appendText("\n")
276277
}
277278

278279
fun logDirtyFilesByOutputs(dirtyFiles: Collection<File>) {
@@ -289,7 +290,8 @@ class IncrementalContext(
289290
}
290291
val outputsToRemove = allOutputs - validOutputs
291292

292-
val logFile = File(options.projectBaseDir, "build/kspDirtySetByOutputs.log")
293+
val logFile = File(logsDir, "kspDirtySetByOutputs.log")
294+
logFile.appendText("=== Build $buildTime ===\n")
293295
logFile.appendText("Dirty sources\n")
294296
dirtyFiles.forEach { logFile.appendText(" $it\n") }
295297
logFile.appendText("Outputs to remove\n")
@@ -301,7 +303,8 @@ class IncrementalContext(
301303
if (!options.incrementalLog)
302304
return
303305

304-
val logFile = File(options.projectBaseDir, "build/kspSourceToOutputs.log")
306+
val logFile = File(logsDir, "kspSourceToOutputs.log")
307+
logFile.appendText("=== Build $buildTime ===\n")
305308
logFile.appendText("All outputs\n")
306309
sourceToOutputsMap.keys.forEach { source ->
307310
logFile.appendText(" $source:\n")
@@ -316,12 +319,16 @@ class IncrementalContext(
316319
if (!options.incrementalLog)
317320
return
318321

319-
val logFile = File(options.projectBaseDir, "build/kspDirtySet.log")
322+
val logFile = File(logsDir, "kspDirtySet.log")
323+
logFile.appendText("=== Build $buildTime ===\n")
324+
logFile.appendText("All Files\n")
325+
ksFiles.forEach { logFile.appendText(" ${it.relativeFile}\n") }
320326
logFile.appendText("Dirty:\n")
321327
files.forEach {
322328
logFile.appendText(" ${it.relativeFile}\n")
323329
}
324-
logFile.appendText("\n")
330+
val percentage = "%.2f".format(files.size.toDouble() / ksFiles.size.toDouble() * 100)
331+
logFile.appendText("\nDirty / All: $percentage%\n\n")
325332
}
326333

327334
// Beware: no side-effects here; Caches should only be touched in updateCaches.

0 commit comments

Comments
 (0)