1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 16:28:12 -07:00

outputChecksum needs to be a closure.

This commit is contained in:
Cedric Beust 2015-12-31 10:18:39 -08:00
parent 7cdb4b1a9c
commit d9ae38eca1
3 changed files with 12 additions and 6 deletions

View file

@ -7,7 +7,10 @@ import com.beust.kobalt.api.Project
* if they differ, the task gets run. If they are equal, outputChecksums are then compared.
* @param outputChecksum The checksum for the output of this task. If null, the output is absent
* and the task will be run. If non null, it gets compared against the checksum of the previous run and
* if they differ, the task gets run.
* if they differ, the task gets run. Note that this parameter is a closure and not a direct value
* because Kobalt needs to call it twice: once before the task and once after a successful execution (to store it).
* @param task The task to run.
*/
class IncrementalTaskInfo(val inputChecksum: String?, val outputChecksum: String?, val task: (Project) -> TaskResult)
class IncrementalTaskInfo(val inputChecksum: String?,
val outputChecksum: () -> String?,
val task: (Project) -> TaskResult)

View file

@ -82,10 +82,12 @@ class IncrementalManager(val fileName: String = IncrementalManager.BUILD_INFO_FI
// TODO: compare the checksums with the previous run
val taskName = project.name + ":" + taskName
var upToDate = false
var taskOutputChecksum : String? = null
inputChecksumFor(taskName)?.let { inputChecksum ->
if (inputChecksum == iit.inputChecksum) {
outputChecksumFor(taskName)?.let { outputChecksum ->
if (outputChecksum == iit.outputChecksum) {
taskOutputChecksum = iit.outputChecksum()
if (outputChecksum == taskOutputChecksum) {
upToDate = true
} else {
logIncremental(1, "Incremental task $taskName output is out of date, running it")
@ -105,7 +107,7 @@ class IncrementalManager(val fileName: String = IncrementalManager.BUILD_INFO_FI
saveInputChecksum(taskName, it)
logIncremental(1, " input checksum \"$it\" saved")
}
iit.outputChecksum?.let {
taskOutputChecksum?.let {
saveOutputChecksum(taskName, it)
logIncremental(1, " output checksum \"$it\" saved")
}

View file

@ -172,10 +172,11 @@ abstract class JvmCompilerPlugin @Inject constructor(
val inputChecksum = Md5.toMd5Directories(project.sourceDirectories.map {
File(project.directory, it)
})
val outputChecksum = Md5.toMd5Directories(listOf(File(project.classesDir(context))))
return IncrementalTaskInfo(
inputChecksum = inputChecksum,
outputChecksum = outputChecksum,
outputChecksum = {
Md5.toMd5Directories(listOf(File(project.classesDir(context))))
},
task = { project -> doTaskCompile(project) }
)
}