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.
|
||||
* @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)
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
|
|
|
@ -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) }
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue