@@ -212,7 +212,7 @@ private fun Project.configureKotlinCompilation(
212212 val projectName = project.name
213213 val dumpFileName = project.jvmDumpFileName
214214 val apiDirProvider = targetConfig.apiDir
215- val apiBuildDir = apiDirProvider.map { layout.buildDirectory.asFile.get() .resolve(it) }
215+ val apiBuildDir = apiDirProvider.flatMap { f -> layout.buildDirectory.asFile.map { it .resolve(f) } }
216216
217217 val apiBuild = task<KotlinApiBuildTask >(targetConfig.apiTaskName(" Build" )) {
218218 // Do not enable task for empty umbrella modules
@@ -259,7 +259,7 @@ private fun Project.configureApiTasks(
259259) {
260260 val projectName = project.name
261261 val dumpFileName = project.jvmDumpFileName
262- val apiBuildDir = targetConfig.apiDir.map { layout.buildDirectory.asFile.get() .resolve(it) }
262+ val apiBuildDir = targetConfig.apiDir.flatMap { f -> layout.buildDirectory.asFile.map { it .resolve(f) } }
263263 val sourceSetsOutputsProvider = project.provider {
264264 sourceSets
265265 .filter { it.name == SourceSet .MAIN_SOURCE_SET_NAME || it.name in extension.additionalSourceSets }
@@ -297,7 +297,7 @@ private fun Project.configureCheckTasks(
297297 isEnabled = apiCheckEnabled(projectName, extension) && apiBuild.map { it.enabled }.getOrElse(true )
298298 group = " verification"
299299 description = " Checks signatures of public API against the golden value in API folder for $projectName "
300- projectApiFile.set (apiCheckDir.get() .resolve(jvmDumpFileName))
300+ projectApiFile.fileProvider (apiCheckDir.map { it .resolve(jvmDumpFileName) } )
301301 generatedApiFile.fileProvider(apiBuild.map { it.outputApiFile })
302302 }
303303
@@ -372,13 +372,13 @@ private class KlibValidationPipelineBuilder(
372372 TargetConfig (project, extension, KLIB_INFERRED_DUMPS_DIRECTORY , intermediateFilesConfig)
373373
374374 val projectDir = project.projectDir
375- val klibApiDir = klibApiDirConfig?.map {
376- projectDir.resolve( it.apiDir.get())
375+ val klibApiDir = klibApiDirConfig?.flatMap {
376+ it.apiDir.map { projectDir.resolve(it) }
377377 }!!
378- val projectBuildDir = project.layout.buildDirectory.asFile.get()
379- val klibMergeDir = projectBuildDir.resolve( klibDumpConfig.apiDir.get())
380- val klibMergeInferredDir = projectBuildDir.resolve( klibInferDumpConfig.apiDir.get())
381- val klibExtractedFileDir = klibMergeInferredDir.resolve(" extracted" )
378+ val projectBuildDir = project.layout.buildDirectory.asFile
379+ val klibMergeDir = projectBuildDir.flatMap { pd -> klibDumpConfig.apiDir.map { pd.resolve(it) } }
380+ val klibMergeInferredDir = projectBuildDir.flatMap { pd -> klibInferDumpConfig.apiDir.map { pd.resolve(it) } }
381+ val klibExtractedFileDir = klibMergeInferredDir.map { it. resolve(" extracted" ) }
382382
383383 val klibMerge = project.mergeKlibsUmbrellaTask(klibDumpConfig, klibMergeDir)
384384 val klibMergeInferred = project.mergeInferredKlibsUmbrellaTask(klibDumpConfig, klibMergeInferredDir)
@@ -399,27 +399,29 @@ private class KlibValidationPipelineBuilder(
399399 project.configureTargets(klibApiDir, klibMerge, klibMergeInferred)
400400 }
401401
402- private fun Project.checkKlibsTask (klibDumpConfig : TargetConfig )
403- = project.task<KotlinApiCompareTask >(klibDumpConfig.apiTaskName(" Check" )) {
404- isEnabled = klibAbiCheckEnabled(project.name, extension)
405- group = " verification"
406- description = " Checks signatures of a public KLib ABI against the golden value in ABI folder for ${project.name} "
407- }
402+ private fun Project.checkKlibsTask (klibDumpConfig : TargetConfig ) =
403+ project.task<KotlinApiCompareTask >(klibDumpConfig.apiTaskName(" Check" )) {
404+ isEnabled = klibAbiCheckEnabled(project.name, extension)
405+ group = " verification"
406+ description =
407+ " Checks signatures of a public KLib ABI against the golden value in ABI folder for ${project.name} "
408+ }
408409
409- private fun Project.dumpKlibsTask (klibDumpConfig : TargetConfig ) = project.task<SyncFile >(klibDumpConfig.apiTaskName(" Dump" )) {
410- isEnabled = klibAbiCheckEnabled(project.name, extension)
411- description = " Syncs the KLib ABI file for ${project.name} "
412- group = " other"
413- onlyIf {
414- it as SyncFile
415- it.to.get().asFile.exists() || it.from.get().asFile.exists()
410+ private fun Project.dumpKlibsTask (klibDumpConfig : TargetConfig ) =
411+ project.task<SyncFile >(klibDumpConfig.apiTaskName(" Dump" )) {
412+ isEnabled = klibAbiCheckEnabled(project.name, extension)
413+ description = " Syncs the KLib ABI file for ${project.name} "
414+ group = " other"
415+ onlyIf {
416+ it as SyncFile
417+ it.to.get().asFile.exists() || it.from.get().asFile.exists()
418+ }
416419 }
417- }
418420
419421 private fun Project.extractAbi (
420422 klibDumpConfig : TargetConfig ,
421423 klibApiDir : Provider <File >,
422- klibOutputDir : File
424+ klibOutputDir : Provider < File >
423425 ) = project.task<KotlinKlibExtractAbiTask >(
424426 klibDumpConfig.apiTaskName(" ExtractForValidation" )
425427 )
@@ -431,12 +433,12 @@ private class KlibValidationPipelineBuilder(
431433 strictValidation.set(extension.klib.strictValidation)
432434 requiredTargets.addAll(supportedTargets())
433435 inputAbiFile.fileProvider(klibApiDir.map { it.resolve(klibDumpFileName) })
434- outputAbiFile.set (klibOutputDir.resolve(klibDumpFileName))
436+ outputAbiFile.fileProvider (klibOutputDir.map { it. resolve(klibDumpFileName) } )
435437 }
436438
437439 private fun Project.mergeInferredKlibsUmbrellaTask (
438440 klibDumpConfig : TargetConfig ,
439- klibMergeDir : File ,
441+ klibMergeDir : Provider < File > ,
440442 ) = project.task<KotlinKlibMergeAbiTask >(
441443 klibDumpConfig.apiTaskName(" MergeInferred" )
442444 )
@@ -445,17 +447,17 @@ private class KlibValidationPipelineBuilder(
445447 description = " Merges multiple KLib ABI dump files generated for " +
446448 " different targets (including inferred dumps for unsupported targets) " +
447449 " into a single merged KLib ABI dump"
448- mergedApiFile.set (klibMergeDir.resolve(klibDumpFileName))
450+ mergedApiFile.fileProvider (klibMergeDir.map { it. resolve(klibDumpFileName) } )
449451 }
450452
451453 private fun Project.mergeKlibsUmbrellaTask (
452454 klibDumpConfig : TargetConfig ,
453- klibMergeDir : File
455+ klibMergeDir : Provider < File >
454456 ) = project.task<KotlinKlibMergeAbiTask >(klibDumpConfig.apiTaskName(" Merge" )) {
455457 isEnabled = klibAbiCheckEnabled(project.name, extension)
456458 description = " Merges multiple KLib ABI dump files generated for " +
457459 " different targets into a single merged KLib ABI dump"
458- mergedApiFile.set (klibMergeDir.resolve(klibDumpFileName))
460+ mergedApiFile.fileProvider (klibMergeDir.map { it. resolve(klibDumpFileName) } )
459461 }
460462
461463 fun Project.bannedTargets (): Set <String > {
@@ -494,14 +496,19 @@ private class KlibValidationPipelineBuilder(
494496 val target = currentTarget.toKlibTarget()
495497 val targetName = currentTarget.targetName
496498 val targetConfig = TargetConfig (project, extension, targetName, intermediateFilesConfig)
497- val apiBuildDir = targetConfig.apiDir.map { project.layout.buildDirectory.asFile.get().resolve(it) }.get()
499+ val apiBuildDir =
500+ targetConfig.apiDir.flatMap { f -> project.layout.buildDirectory.asFile.map { it.resolve(f) } }
498501 val targetSupported = targetIsSupported(currentTarget)
499502 // If a target is supported, the workflow is simple: create a dump, then merge it along with other dumps.
500503 if (targetSupported) {
501- val buildTargetAbi = configureKlibCompilation(mainCompilation, extension, targetConfig,
502- target, apiBuildDir)
503- generatedDumps.add(KlibDumpMetadata (target,
504- objects.fileProperty().also { it.set(buildTargetAbi.flatMap { it.outputAbiFile }) }))
504+ val buildTargetAbi = configureKlibCompilation(
505+ mainCompilation, extension, targetConfig,
506+ target, apiBuildDir
507+ )
508+ generatedDumps.add(
509+ KlibDumpMetadata (target,
510+ objects.fileProperty().also { it.set(buildTargetAbi.flatMap { it.outputAbiFile }) })
511+ )
505512 return @configureEach
506513 }
507514 // If the target is unsupported, the regular merge task will only depend on a task complaining about
@@ -518,10 +525,12 @@ private class KlibValidationPipelineBuilder(
518525 apiBuildDir
519526 )
520527 proxy.configure { it.inputDumps.addAll(generatedDumps) }
521- inferredDumps.add(KlibDumpMetadata (currentTarget.toKlibTarget(),
522- objects.fileProperty().also {
523- it.set(proxy.flatMap { it.outputAbiFile })
524- }))
528+ inferredDumps.add(
529+ KlibDumpMetadata (currentTarget.toKlibTarget(),
530+ objects.fileProperty().also {
531+ it.set(proxy.flatMap { it.outputAbiFile })
532+ })
533+ )
525534 }
526535 }
527536
@@ -557,7 +566,7 @@ private class KlibValidationPipelineBuilder(
557566 extension : ApiValidationExtension ,
558567 targetConfig : TargetConfig ,
559568 target : KlibTarget ,
560- apiBuildDir : File
569+ apiBuildDir : Provider < File >
561570 ): TaskProvider <KotlinKlibAbiBuildTask > {
562571 val projectName = project.name
563572 val buildTask = project.task<KotlinKlibAbiBuildTask >(targetConfig.apiTaskName(" Build" )) {
@@ -569,7 +578,7 @@ private class KlibValidationPipelineBuilder(
569578 this .target.set(target)
570579 klibFile.from(compilation.output.classesDirs)
571580 signatureVersion.set(extension.klib.signatureVersion)
572- outputAbiFile.set (apiBuildDir.resolve(klibDumpFileName))
581+ outputAbiFile.fileProvider (apiBuildDir.map { it. resolve(klibDumpFileName) } )
573582 }
574583 return buildTask
575584 }
@@ -591,7 +600,7 @@ private class KlibValidationPipelineBuilder(
591600 klibApiDir : Provider <File >,
592601 targetConfig : TargetConfig ,
593602 unsupportedTarget : KlibTarget ,
594- apiBuildDir : File
603+ apiBuildDir : Provider < File >
595604 ): TaskProvider <KotlinKlibInferAbiTask > {
596605 val targetName = targetConfig.targetName!!
597606 return project.task<KotlinKlibInferAbiTask >(targetConfig.apiTaskName(" Infer" )) {
@@ -601,7 +610,7 @@ private class KlibValidationPipelineBuilder(
601610 group = " other"
602611 target.set(unsupportedTarget)
603612 oldMergedKlibDump.fileProvider(klibApiDir.map { it.resolve(klibDumpFileName) })
604- outputAbiFile.set (apiBuildDir.resolve(klibDumpFileName))
613+ outputAbiFile.fileProvider (apiBuildDir.map { it. resolve(klibDumpFileName) } )
605614 }
606615 }
607616}
0 commit comments