[Gradle, JS] Fix gradle <5.1 incompatibility with fileProperty

This commit is contained in:
Ilya Goncharov
2020-01-29 16:33:12 +03:00
parent 24451f62ac
commit c208f038ad
@@ -6,8 +6,8 @@
package org.jetbrains.kotlin.gradle.utils
import org.gradle.api.Project
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.file.RegularFile
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider
import java.io.File
@@ -38,9 +38,17 @@ private class OptionalProviderDelegate<T>(private val provider: Provider<T?>) :
internal fun <T> Project.optionalProvider(initialize: () -> T?): ReadOnlyProperty<Any?, T?> =
OptionalProviderDelegate(provider(initialize))
// Before 5.0 fileProperty is created via ProjectLayout
// https://docs.gradle.org/current/javadoc/org/gradle/api/model/ObjectFactory.html#fileProperty--
internal fun Project.newFileProperty(initialize: (() -> File)? = null): RegularFileProperty =
project.objects.fileProperty().apply {
if (initialize != null) {
set(provider { RegularFile(initialize) })
if (isGradleVersionAtLeast(5, 0)) {
project.objects.fileProperty().apply {
if (initialize != null) {
set(provider { RegularFile(initialize) })
}
}
} else {
val projectLayoutClass = Class.forName("org.gradle.api.file.ProjectLayout")
val filePropertyMethod = projectLayoutClass.getMethod("fileProperty")
filePropertyMethod(project.layout) as RegularFileProperty
}