Skip to content

Commit 80884c2

Browse files
committed
Fix non-incremental builds.
1 parent 83d4e71 commit 80884c2

File tree

1 file changed

+40
-21
lines changed
  • atplug-plugin-gradle/src/main/java/com/diffplug/atplug/tooling/gradle

1 file changed

+40
-21
lines changed

atplug-plugin-gradle/src/main/java/com/diffplug/atplug/tooling/gradle/FindPlugsTask.kt

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import java.io.File
55
import org.gradle.api.DefaultTask
66
import org.gradle.api.file.ConfigurableFileCollection
77
import org.gradle.api.file.DirectoryProperty
8+
import org.gradle.api.file.FileType
89
import org.gradle.api.tasks.*
910
import org.gradle.work.*
1011

@@ -24,35 +25,53 @@ abstract class FindPlugsTask : DefaultTask() {
2425

2526
@TaskAction
2627
fun findPlugs(inputChanges: InputChanges) {
28+
val parser = PlugParser()
29+
2730
// If not incremental, clear everything and rescan
28-
if (!inputChanges.isIncremental) {
31+
if (inputChanges.isIncremental) {
32+
discoveredPlugsDir.get().asFile.mkdirs()
33+
for (change in inputChanges.getFileChanges(classesFolders)) {
34+
if (!change.file.name.endsWith(".class")) {
35+
continue
36+
}
37+
when (change.changeType) {
38+
ChangeType.REMOVED -> {
39+
// Remove old discovered data for this file
40+
removeOldMetadata(change)
41+
}
42+
ChangeType.ADDED,
43+
ChangeType.MODIFIED -> {
44+
parseAndWriteMetadata(parser, change)
45+
}
46+
}
47+
}
48+
} else {
2949
discoveredPlugsDir.get().asFile.deleteRecursively()
30-
}
50+
discoveredPlugsDir.get().asFile.mkdirs()
51+
classesFolders.files.forEach { folder ->
52+
folder
53+
.walkTopDown()
54+
.filter { it.isFile && it.name.endsWith(".class") }
55+
.forEach { classFile ->
56+
val relativePath = classFile.toRelativeString(folder)
57+
parseAndWriteMetadata(
58+
parser,
59+
object : FileChange {
60+
override fun getFile(): File = classFile
3161

32-
// Make sure our output directory exists
33-
discoveredPlugsDir.get().asFile.mkdirs()
62+
override fun getChangeType(): ChangeType = ChangeType.ADDED
3463

35-
// For each changed file in classesFolders, determine if it has @Plug
36-
val parser = PlugParser()
37-
for (change in inputChanges.getFileChanges(classesFolders)) {
38-
if (!change.file.name.endsWith(".class")) {
39-
continue
40-
}
41-
when (change.changeType) {
42-
ChangeType.REMOVED -> {
43-
// Remove old discovered data for this file
44-
removeOldMetadata(change)
45-
}
46-
ChangeType.ADDED,
47-
ChangeType.MODIFIED -> {
48-
parseAndWriteMetadata(parser, change, change.file)
49-
}
64+
override fun getFileType(): FileType = FileType.FILE
65+
66+
override fun getNormalizedPath(): String = relativePath
67+
})
68+
}
5069
}
5170
}
5271
}
5372

54-
private fun parseAndWriteMetadata(parser: PlugParser, change: FileChange, classFile: File) {
55-
val plugToSocket = parser.parse(classFile)
73+
private fun parseAndWriteMetadata(parser: PlugParser, change: FileChange) {
74+
val plugToSocket = parser.parse(change.file)
5675
if (plugToSocket != null) {
5776
// For example: write a single line containing the discovered plug FQN
5877
val discoveredFile = discoveredPlugsDir.file(normalizePath(change)).get().asFile

0 commit comments

Comments
 (0)