diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt index 73ed318f092..3a146524a84 100644 --- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt +++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt @@ -23,6 +23,7 @@ import java.nio.file.Paths import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.artifacts.ProjectDependency +import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.provider.Provider import org.gradle.api.publish.PublishingExtension import org.gradle.api.publish.maven.MavenPom @@ -124,7 +125,10 @@ abstract class BaseFirebaseLibraryPlugin : Plugin { Coverage.apply(library) } - protected fun getApiInfo(project: Project, srcDirs: Set): TaskProvider { + protected fun getApiInfo( + project: Project, + srcDirs: ConfigurableFileCollection, + ): TaskProvider { val outputFile = project.rootProject.file( Paths.get( @@ -138,7 +142,7 @@ abstract class BaseFirebaseLibraryPlugin : Plugin { project.file("api.txt").takeIf { it.exists() } ?: project.rootProject.file("empty-api.txt") val apiInfo = project.tasks.register("apiInformation") { - sources.value(project.provider { srcDirs }) + sources.from(project.provider { srcDirs }) apiTxtFile.set(apiTxt) baselineFile.set(project.file("baseline.txt")) this.outputFile.set(outputFile) @@ -157,17 +161,17 @@ abstract class BaseFirebaseLibraryPlugin : Plugin { } } - protected fun getGenerateApiTxt(project: Project, srcDirs: Set) = + protected fun getGenerateApiTxt(project: Project, srcDirs: ConfigurableFileCollection) = project.tasks.register("generateApiTxtFile") { - sources.value(project.provider { srcDirs }) + sources.from(project.provider { srcDirs }) apiTxtFile.set(project.file("api.txt")) baselineFile.set(project.file("baseline.txt")) updateBaseline.set(project.hasProperty("updateBaseline")) } - protected fun getDocStubs(project: Project, srcDirs: Set) = + protected fun getDocStubs(project: Project, srcDirs: ConfigurableFileCollection) = project.tasks.register("docStubs") { - sources.value(project.provider { srcDirs }) + sources.from(project.provider { srcDirs }) } /** diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/DackkaGenerationTask.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/DackkaGenerationTask.kt index 663ac35365a..058a4f51e98 100644 --- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/DackkaGenerationTask.kt +++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/DackkaGenerationTask.kt @@ -20,6 +20,7 @@ import java.io.File import javax.inject.Inject import org.gradle.api.DefaultTask import org.gradle.api.file.FileCollection +import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.CacheableTask @@ -53,7 +54,7 @@ import org.json.JSONObject @CacheableTask abstract class GenerateDocumentationTaskExtension : DefaultTask() { @get:[InputFile Classpath] - abstract val dackkaJarFile: Property + abstract val dackkaJarFile: RegularFileProperty @get:[InputFiles Classpath] abstract val dependencies: Property @@ -72,7 +73,7 @@ abstract class GenerateDocumentationTaskExtension : DefaultTask() { @get:Input abstract val clientName: Property - @get:OutputDirectory abstract val outputDirectory: Property + @get:OutputDirectory abstract val outputDirectory: RegularFileProperty } /** @@ -123,7 +124,7 @@ constructor(private val workerExecutor: WorkerExecutor) : GenerateDocumentationT val jsonMap = mapOf( "moduleName" to "", - "outputDir" to outputDirectory.get().absolutePath, + "outputDir" to outputDirectory.get().asFile.absolutePath, "globalLinks" to "", "sourceSets" to listOf( @@ -215,7 +216,7 @@ constructor(private val workerExecutor: WorkerExecutor) : GenerateDocumentationT */ interface DackkaParams : WorkParameters { val args: ListProperty - val dackkaFile: Property + val dackkaFile: RegularFileProperty } /** diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/DackkaPlugin.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/DackkaPlugin.kt index 32cc65d6edc..4a289bebdd5 100644 --- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/DackkaPlugin.kt +++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/DackkaPlugin.kt @@ -18,9 +18,9 @@ package com.google.firebase.gradle.plugins import com.android.build.api.attributes.BuildTypeAttr import com.android.build.gradle.LibraryExtension -import java.io.File import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.file.RegularFile import org.gradle.api.provider.Provider import org.gradle.api.tasks.Copy import org.gradle.api.tasks.Delete @@ -204,26 +204,26 @@ abstract class DackkaPlugin : Plugin { private fun GenerateDocumentationTask.applyCommonConfigurations() { dependsOnAndMustRunAfter("createFullJarRelease") - val dackkaFile = project.provider { project.dackkaConfig.singleFile } + val dackkaFile = project.layout.projectDirectory.file(project.dackkaConfig.singleFile.path) - dackkaJarFile.set(dackkaFile) + dackkaJarFile.convention(dackkaFile) clientName.set(project.firebaseLibrary.artifactId) } private fun registerFiresiteTransformTask( project: Project, - dackkaOutputDirectory: Provider, + dackkaOutputDirectory: Provider, ) = project.tasks.register("firesiteTransform") { val outputDir by tempFile("dackkaTransformedFiles") - dackkaFiles.set(dackkaOutputDirectory.childFile("docs/reference")) + dackkaFiles.set(dackkaOutputDirectory) outputDirectory.set(outputDir) } private fun registerCopyDocsToCommonDirectoryTask( project: Project, - transformedFilesDirectory: Provider, + transformedFilesDirectory: Provider, ) = project.tasks.register("copyDocsToCommonDirectory") { from(transformedFilesDirectory) diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt index b355e2ba28a..e0732174ae4 100644 --- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt +++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt @@ -23,7 +23,6 @@ import com.google.firebase.gradle.plugins.ci.device.FirebaseTestServer import com.google.firebase.gradle.plugins.license.LicenseResolverPlugin import com.google.firebase.gradle.plugins.semver.ApiDiffer import com.google.firebase.gradle.plugins.semver.GmavenCopier -import java.io.File import org.gradle.api.JavaVersion import org.gradle.api.Project import org.gradle.api.attributes.Attribute @@ -164,14 +163,14 @@ class FirebaseAndroidLibraryPlugin : BaseFirebaseLibraryPlugin() { } private fun setupApiInformationAnalysis(project: Project, android: LibraryExtension) { - val srcDirs = android.sourceSets.getByName("main").java.srcDirs + val srcDirs = project.files(android.sourceSets.getByName("main").java.srcDirs) val mainSourceSets = android.sourceSets.getByName("main") val getKotlinDirectories = mainSourceSets::class.java.getDeclaredMethod("getKotlinDirectories") val kotlinSrcDirs = getKotlinDirectories.invoke(mainSourceSets) - val apiInfo = getApiInfo(project, kotlinSrcDirs as Set) - val generateApiTxt = getGenerateApiTxt(project, kotlinSrcDirs) + val apiInfo = getApiInfo(project, project.files(kotlinSrcDirs)) + val generateApiTxt = getGenerateApiTxt(project, project.files(kotlinSrcDirs)) val docStubs = getDocStubs(project, srcDirs) project.tasks.getByName("check").dependsOn(docStubs) diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.kt index 84bf1e9b69c..0c7b2028f1c 100644 --- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.kt +++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.kt @@ -107,7 +107,14 @@ class FirebaseJavaLibraryPlugin : BaseFirebaseLibraryPlugin() { private fun setupApiInformationAnalysis(project: Project) { val srcDirs = - project.convention.getPlugin().sourceSets.getByName("main").java.srcDirs + project.files( + project.convention + .getPlugin() + .sourceSets + .getByName("main") + .java + .srcDirs + ) val apiInfo = getApiInfo(project, srcDirs) diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FiresiteTransformTask.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FiresiteTransformTask.kt index 8d8e5e4a8f6..e8f4186d97e 100644 --- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FiresiteTransformTask.kt +++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FiresiteTransformTask.kt @@ -18,7 +18,7 @@ package com.google.firebase.gradle.plugins import java.io.File import org.gradle.api.DefaultTask -import org.gradle.api.provider.Property +import org.gradle.api.file.RegularFileProperty import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.InputDirectory import org.gradle.api.tasks.OutputDirectory @@ -46,16 +46,16 @@ import org.gradle.api.tasks.TaskAction abstract class FiresiteTransformTask : DefaultTask() { @get:InputDirectory @get:PathSensitive(PathSensitivity.RELATIVE) - abstract val dackkaFiles: Property + abstract val dackkaFiles: RegularFileProperty - @get:OutputDirectory abstract val outputDirectory: Property + @get:OutputDirectory abstract val outputDirectory: RegularFileProperty @TaskAction fun build() { val namesOfFilesWeDoNotNeed = listOf("index.html", "classes.html", "packages.html", "package-list") - val rootDirectory = dackkaFiles.get() - val targetDirectory = outputDirectory.get() + val rootDirectory = dackkaFiles.get().asFile.childFile("docs/reference") + val targetDirectory = outputDirectory.get().asFile targetDirectory.deleteRecursively() rootDirectory.walkTopDown().forEach { diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/GitSubmodulePlugin.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/GitSubmodulePlugin.kt index 54a722fcacb..87b094044a6 100644 --- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/GitSubmodulePlugin.kt +++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/GitSubmodulePlugin.kt @@ -19,7 +19,7 @@ package com.google.firebase.gradle.plugins import java.io.File import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.provider.Property +import org.gradle.api.file.RegularFileProperty import org.gradle.api.tasks.Exec import org.gradle.kotlin.dsl.create import org.gradle.kotlin.dsl.register @@ -30,7 +30,7 @@ import org.gradle.kotlin.dsl.register * @param submodules the parent directory of the SDK's Git Submodules. Defaults to `src/third_party` */ interface GitSubmodulePluginExtension { - val submodules: Property + val submodules: RegularFileProperty } /** @@ -56,15 +56,15 @@ abstract class GitSubmodulePlugin : Plugin { override fun apply(project: Project) { with(configureExtension(project)) { - registerInitializeGitSubmodulesTask(project, submodules.get()) - registerUpdateGitSubmodulesTask(project, submodules.get()) - registerRemoveGitSubmodulesTask(project, submodules.get()) + registerInitializeGitSubmodulesTask(project, submodules.get().asFile) + registerUpdateGitSubmodulesTask(project, submodules.get().asFile) + registerRemoveGitSubmodulesTask(project, submodules.get().asFile) } } private fun configureExtension(project: Project) = project.extensions.create("GitSubmodule").apply { - submodules.convention(project.file("src/third_party")) + submodules.convention(project.layout.projectDirectory.file("src/third_party")) } /** diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/Metalava.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/Metalava.kt index 859451ad67a..56cd758a1ac 100644 --- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/Metalava.kt +++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/Metalava.kt @@ -22,9 +22,10 @@ import java.io.OutputStream import org.gradle.api.DefaultTask import org.gradle.api.Project import org.gradle.api.artifacts.Configuration +import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.FileCollection +import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Property -import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.Classpath import org.gradle.api.tasks.Input import org.gradle.api.tasks.InputFile @@ -72,7 +73,7 @@ fun Project.runMetalavaWithArgs( abstract class GenerateStubsTask : DefaultTask() { /** Source files against which API signatures will be validated. */ - @get:InputFiles abstract val sources: SetProperty + @get:InputFiles abstract val sources: ConfigurableFileCollection @get:[InputFiles Classpath] lateinit var classPath: FileCollection @@ -81,8 +82,7 @@ abstract class GenerateStubsTask : DefaultTask() { @TaskAction fun run() { - val sourcePath = - sources.get().asSequence().filter { it.exists() }.map { it.absolutePath }.joinToString(":") + val sourcePath = sources.files.filter { it.exists() }.map { it.absolutePath }.joinToString(":") val classPath = classPath.files.asSequence().map { it.absolutePath }.toMutableList() project.androidJar?.let { classPath += listOf(it.absolutePath) } @@ -103,20 +103,19 @@ abstract class GenerateStubsTask : DefaultTask() { abstract class GenerateApiTxtTask : DefaultTask() { /** Source files against which API signatures will be validated. */ - @get:InputFiles abstract val sources: SetProperty + @get:InputFiles abstract val sources: ConfigurableFileCollection @get:InputFiles lateinit var classPath: FileCollection - @get:OutputFile abstract val apiTxtFile: Property + @get:OutputFile abstract val apiTxtFile: RegularFileProperty - @get:OutputFile abstract val baselineFile: Property + @get:OutputFile abstract val baselineFile: RegularFileProperty @get:Input abstract val updateBaseline: Property @TaskAction fun run() { - val sourcePath = - sources.get().asSequence().filter { it.exists() }.map { it.absolutePath }.joinToString(":") + val sourcePath = sources.files.filter { it.exists() }.map { it.absolutePath }.joinToString(":") val classPath = classPath.files.asSequence().map { it.absolutePath }.toMutableList() project.androidJar?.let { classPath += listOf(it.absolutePath) } @@ -128,11 +127,12 @@ abstract class GenerateApiTxtTask : DefaultTask() { "--classpath", classPath.joinToString(":"), "--api", - apiTxtFile.get().absolutePath, + apiTxtFile.get().asFile.absolutePath, "--format=v2", ) + if (updateBaseline.get()) listOf("--update-baseline") - else if (baselineFile.get().exists()) listOf("--baseline", baselineFile.get().absolutePath) + else if (baselineFile.get().asFile.exists()) + listOf("--baseline", baselineFile.get().asFile.absolutePath) else listOf(), ignoreFailure = true, ) @@ -141,24 +141,23 @@ abstract class GenerateApiTxtTask : DefaultTask() { abstract class ApiInformationTask : DefaultTask() { /** Source files against which API signatures will be validated. */ - @get:InputFiles abstract val sources: SetProperty + @get:InputFiles abstract val sources: ConfigurableFileCollection @get:InputFiles lateinit var classPath: FileCollection - @get:InputFile abstract val apiTxtFile: Property + @get:InputFile abstract val apiTxtFile: RegularFileProperty - @get:OutputFile abstract val outputApiFile: Property + @get:OutputFile abstract val outputApiFile: RegularFileProperty - @get:OutputFile abstract val baselineFile: Property + @get:OutputFile abstract val baselineFile: RegularFileProperty - @get:OutputFile abstract val outputFile: Property + @get:OutputFile abstract val outputFile: RegularFileProperty @get:Input abstract val updateBaseline: Property @TaskAction fun run() { - val sourcePath = - sources.get().asSequence().filter { it.exists() }.map { it.absolutePath }.joinToString(":") + val sourcePath = sources.files.filter { it.exists() }.map { it.absolutePath }.joinToString(":") val classPath = classPath.files.asSequence().map { it.absolutePath }.toMutableList() project.androidJar?.let { classPath += listOf(it.absolutePath) } @@ -170,7 +169,7 @@ abstract class ApiInformationTask : DefaultTask() { "--classpath", classPath.joinToString(":"), "--api", - outputApiFile.get().absolutePath, + outputApiFile.get().asFile.absolutePath, "--format=v2", ), ignoreFailure = true, @@ -179,9 +178,9 @@ abstract class ApiInformationTask : DefaultTask() { project.runMetalavaWithArgs( listOf( "--source-files", - outputApiFile.get().absolutePath, + outputApiFile.get().asFile.absolutePath, "--check-compatibility:api:released", - apiTxtFile.get().absolutePath, + apiTxtFile.get().asFile.absolutePath, "--error", "AddedClass", "--error", @@ -192,10 +191,11 @@ abstract class ApiInformationTask : DefaultTask() { "--no-color", ) + if (updateBaseline.get()) listOf("--update-baseline") - else if (baselineFile.get().exists()) listOf("--baseline", baselineFile.get().absolutePath) + else if (baselineFile.get().asFile.exists()) + listOf("--baseline", baselineFile.get().asFile.absolutePath) else listOf(), ignoreFailure = true, - stdOut = FileOutputStream(outputFile.get()), + stdOut = FileOutputStream(outputFile.get().asFile), ) } } diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/MoveUnreleasedChangesTask.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/MoveUnreleasedChangesTask.kt index 39c8b8675a4..1695f51c460 100644 --- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/MoveUnreleasedChangesTask.kt +++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/MoveUnreleasedChangesTask.kt @@ -18,6 +18,7 @@ package com.google.firebase.gradle.plugins import java.io.File import org.gradle.api.DefaultTask +import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Input import org.gradle.api.tasks.InputFile @@ -41,7 +42,7 @@ import org.gradle.kotlin.dsl.provideDelegate */ abstract class MoveUnreleasedChangesTask : DefaultTask() { @get:[Optional InputFile] - abstract val changelogFile: Property + abstract val changelogFile: RegularFileProperty @get:[Optional Input] abstract val releaseVersion: Property @@ -52,7 +53,7 @@ abstract class MoveUnreleasedChangesTask : DefaultTask() { @TaskAction fun build() { - val file = changelogFile.get() + val file = changelogFile.get().asFile val changelog = Changelog.fromFile(file) val (unreleased, previousReleases) = changelog.releases.separateAt(1) @@ -105,7 +106,7 @@ abstract class MoveUnreleasedChangesTask : DefaultTask() { } private fun configure() { - changelogFile.convention(project.file("CHANGELOG.md")) + changelogFile.convention(project.layout.projectDirectory.file("CHANGELOG.md")) releaseVersion.convention(computeReleaseVersion()) } diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/UpdatePinnedDependenciesTask.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/UpdatePinnedDependenciesTask.kt index 36564d7be78..41df3bc1bb2 100644 --- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/UpdatePinnedDependenciesTask.kt +++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/UpdatePinnedDependenciesTask.kt @@ -18,7 +18,7 @@ package com.google.firebase.gradle.plugins import java.io.File import org.gradle.api.DefaultTask -import org.gradle.api.provider.Property +import org.gradle.api.file.RegularFileProperty import org.gradle.api.tasks.InputFile import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.StopExecutionException @@ -55,10 +55,10 @@ import org.gradle.api.tasks.TaskAction */ abstract class UpdatePinnedDependenciesTask : DefaultTask() { @get:[InputFile] - abstract val buildFile: Property + abstract val buildFile: RegularFileProperty @get:[OutputFile] - abstract val outputFile: Property + abstract val outputFile: RegularFileProperty @TaskAction fun updateBuildFileDependencies() { @@ -67,12 +67,12 @@ abstract class UpdatePinnedDependenciesTask : DefaultTask() { if (dependenciesToChange.isEmpty()) throw StopExecutionException("No libraries to change.") - val buildFileContent = buildFile.get().readLines() + val buildFileContent = buildFile.get().asFile.readLines() val updatedContent = replaceProjectLevelDependencies(buildFileContent, dependenciesToChange) validateDependenciesHaveChanged(dependenciesToChange, buildFileContent, updatedContent) - outputFile.get().writeText(updatedContent.joinToString("\n") + "\n") + outputFile.get().asFile.writeText(updatedContent.joinToString("\n") + "\n") } private fun validateDependenciesHaveChanged( diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/VersionBumpTask.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/VersionBumpTask.kt index 6b12253d400..8e159438345 100644 --- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/VersionBumpTask.kt +++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/VersionBumpTask.kt @@ -18,6 +18,7 @@ package com.google.firebase.gradle.plugins import java.io.File import org.gradle.api.DefaultTask +import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Input import org.gradle.api.tasks.InputFile @@ -43,7 +44,7 @@ import org.gradle.kotlin.dsl.provideDelegate */ abstract class VersionBumpTask : DefaultTask() { @get:[Optional InputFile] - abstract val versionFile: Property + abstract val versionFile: RegularFileProperty @get:[Optional Input] abstract val releasedVersion: Property @@ -57,7 +58,7 @@ abstract class VersionBumpTask : DefaultTask() { @TaskAction fun build() { - versionFile.get().rewriteLines { + versionFile.get().asFile.rewriteLines { when { it.startsWith("version=") -> "version=${newVersion.get()}" it.startsWith("latestReleasedVersion") -> "latestReleasedVersion=${releasedVersion.get()}" @@ -67,7 +68,7 @@ abstract class VersionBumpTask : DefaultTask() { } fun configure() { - versionFile.convention(project.file("gradle.properties")) + versionFile.convention(project.layout.projectDirectory.file("gradle.properties")) releasedVersion.convention(computeReleasedVersion()) newVersion.convention(releasedVersion.map { it.bump() }) }