Skip to content

Commit de4e7b0

Browse files
committed
Use properties in CopyFile task
1 parent 63abbd2 commit de4e7b0

File tree

2 files changed

+18
-20
lines changed

2 files changed

+18
-20
lines changed

src/main/kotlin/BinaryCompatibilityValidatorPlugin.kt

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,8 @@ private fun Project.configureCheckTasks(
310310
isEnabled = apiCheckEnabled(projectName, extension) && apiBuild.map { it.enabled }.getOrElse(true)
311311
group = "other"
312312
description = "Syncs API from build dir to ${targetConfig.apiDir} dir for $projectName"
313-
from = apiBuildDir.get().resolve(dumpFileName)
314-
to = apiCheckDir.get().resolve(dumpFileName)
313+
from.fileProvider(apiBuildDir.map { it.resolve(dumpFileName) })
314+
to.fileProvider(apiCheckDir.map { it.resolve(dumpFileName) })
315315
dependsOn(apiBuild)
316316
}
317317

@@ -387,19 +387,21 @@ private class KlibValidationPipelineBuilder(
387387

388388
val klibMerge = project.mergeKlibsUmbrellaTask(klibDumpConfig, klibMergeDir)
389389
val klibMergeInferred = project.mergeInferredKlibsUmbrellaTask(klibDumpConfig, klibMergeInferredDir)
390-
val klibDump = project.dumpKlibsTask(klibDumpConfig, klibApiDir, klibMergeInferredDir)
390+
val klibDump = project.dumpKlibsTask(klibDumpConfig)
391391
val klibExtractAbiForSupportedTargets = project.extractAbi(klibDumpConfig, klibApiDir, klibExtractedFileDir)
392392
val klibCheck = project.checkKlibsTask(klibDumpConfig, project.provider { klibExtractedFileDir }, klibMergeDir)
393-
393+
klibDump.configure {
394+
it.from.set(klibMergeInferred.flatMap { it.mergedApiFile })
395+
val filename = project.klibDumpFileName
396+
it.to.fileProvider(klibApiDir.map { it.resolve(filename) })
397+
}
394398
commonApiDump.configure { it.dependsOn(klibDump) }
395-
commonApiCheck.configure { it.dependsOn(klibCheck) }
396399

397-
klibDump.configure { it.dependsOn(klibMergeInferred) }
398400
klibCheck.configure {
399401
it.dependsOn(klibExtractAbiForSupportedTargets)
400402
it.dependsOn(klibMerge)
401403
}
402-
404+
commonApiCheck.configure { it.dependsOn(klibCheck) }
403405
project.configureTargets(klibApiDir, klibMerge, klibMergeInferred)
404406
}
405407

@@ -418,16 +420,10 @@ private class KlibValidationPipelineBuilder(
418420
onlyIf("There are no klibs compiled for the project") { hasCompilableTargets.get() }
419421
}
420422

421-
private fun Project.dumpKlibsTask(
422-
klibDumpConfig: TargetConfig,
423-
klibApiDir: Provider<File>,
424-
klibMergeDir: File
425-
) = project.task<CopyFile>(klibDumpConfig.apiTaskName("Dump")) {
423+
private fun Project.dumpKlibsTask(klibDumpConfig: TargetConfig) = project.task<CopyFile>(klibDumpConfig.apiTaskName("Dump")) {
426424
isEnabled = klibAbiCheckEnabled(project.name, extension)
427425
description = "Syncs a KLib ABI dump from a build dir to the ${klibDumpConfig.apiDir} dir for ${project.name}"
428426
group = "other"
429-
from = klibMergeDir.resolve(klibDumpFileName)
430-
to = klibApiDir.get().resolve(klibDumpFileName)
431427
val hasCompilableTargets = project.hasCompilableTargetsPredicate()
432428
onlyIf("There are no klibs compiled for the project") { hasCompilableTargets.get() }
433429
}

src/main/kotlin/CopyFile.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
package kotlinx.validation
77

88
import org.gradle.api.DefaultTask
9+
import org.gradle.api.file.RegularFileProperty
10+
import org.gradle.api.tasks.InputFile
911
import org.gradle.api.tasks.InputFiles
1012
import org.gradle.api.tasks.OutputFile
1113
import org.gradle.api.tasks.TaskAction
@@ -17,15 +19,15 @@ import java.nio.file.StandardCopyOption
1719
// and registers it as an output dependency. If there's another task reading from that particular
1820
// directory or writing into it, their input/output dependencies would clash and as long as
1921
// there will be no explicit ordering or dependencies between these tasks, Gradle would be unhappy.
20-
internal open class CopyFile : DefaultTask() {
21-
@InputFiles
22-
lateinit var from: File
22+
internal abstract class CopyFile : DefaultTask() {
23+
@get:InputFile
24+
abstract val from: RegularFileProperty
2325

24-
@OutputFile
25-
lateinit var to: File
26+
@get:OutputFile
27+
abstract val to: RegularFileProperty
2628

2729
@TaskAction
2830
fun copy() {
29-
Files.copy(from.toPath(), to.toPath(), StandardCopyOption.REPLACE_EXISTING)
31+
Files.copy(from.asFile.get().toPath(), to.asFile.get().toPath(), StandardCopyOption.REPLACE_EXISTING)
3032
}
3133
}

0 commit comments

Comments
 (0)