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:
parent
7cdb4b1a9c
commit
d9ae38eca1
3 changed files with 12 additions and 6 deletions
|
@ -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.
|
* 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
|
* @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
|
* 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.
|
* @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)
|
||||||
|
|
|
@ -82,10 +82,12 @@ class IncrementalManager(val fileName: String = IncrementalManager.BUILD_INFO_FI
|
||||||
// TODO: compare the checksums with the previous run
|
// TODO: compare the checksums with the previous run
|
||||||
val taskName = project.name + ":" + taskName
|
val taskName = project.name + ":" + taskName
|
||||||
var upToDate = false
|
var upToDate = false
|
||||||
|
var taskOutputChecksum : String? = null
|
||||||
inputChecksumFor(taskName)?.let { inputChecksum ->
|
inputChecksumFor(taskName)?.let { inputChecksum ->
|
||||||
if (inputChecksum == iit.inputChecksum) {
|
if (inputChecksum == iit.inputChecksum) {
|
||||||
outputChecksumFor(taskName)?.let { outputChecksum ->
|
outputChecksumFor(taskName)?.let { outputChecksum ->
|
||||||
if (outputChecksum == iit.outputChecksum) {
|
taskOutputChecksum = iit.outputChecksum()
|
||||||
|
if (outputChecksum == taskOutputChecksum) {
|
||||||
upToDate = true
|
upToDate = true
|
||||||
} else {
|
} else {
|
||||||
logIncremental(1, "Incremental task $taskName output is out of date, running it")
|
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)
|
saveInputChecksum(taskName, it)
|
||||||
logIncremental(1, " input checksum \"$it\" saved")
|
logIncremental(1, " input checksum \"$it\" saved")
|
||||||
}
|
}
|
||||||
iit.outputChecksum?.let {
|
taskOutputChecksum?.let {
|
||||||
saveOutputChecksum(taskName, it)
|
saveOutputChecksum(taskName, it)
|
||||||
logIncremental(1, " output checksum \"$it\" saved")
|
logIncremental(1, " output checksum \"$it\" saved")
|
||||||
}
|
}
|
||||||
|
|
|
@ -172,10 +172,11 @@ abstract class JvmCompilerPlugin @Inject constructor(
|
||||||
val inputChecksum = Md5.toMd5Directories(project.sourceDirectories.map {
|
val inputChecksum = Md5.toMd5Directories(project.sourceDirectories.map {
|
||||||
File(project.directory, it)
|
File(project.directory, it)
|
||||||
})
|
})
|
||||||
val outputChecksum = Md5.toMd5Directories(listOf(File(project.classesDir(context))))
|
|
||||||
return IncrementalTaskInfo(
|
return IncrementalTaskInfo(
|
||||||
inputChecksum = inputChecksum,
|
inputChecksum = inputChecksum,
|
||||||
outputChecksum = outputChecksum,
|
outputChecksum = {
|
||||||
|
Md5.toMd5Directories(listOf(File(project.classesDir(context))))
|
||||||
|
},
|
||||||
task = { project -> doTaskCompile(project) }
|
task = { project -> doTaskCompile(project) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue