Android Extensions: Add kotlin-android-extensions-runtime only if experimental flag is enabled

This commit is contained in:
Yan Zhulanow
2017-07-20 21:04:14 +03:00
parent 8cdcfc5e67
commit 98a2506eb0
2 changed files with 28 additions and 2 deletions
@@ -16,6 +16,24 @@
package org.jetbrains.kotlin.gradle.internal
open class AndroidExtensionsExtension {
import groovy.lang.Closure
import org.gradle.util.Configurable
open class AndroidExtensionsExtension : Configurable<AndroidExtensionsExtension> {
private lateinit var onEvaluatedHandler: (AndroidExtensionsExtension) -> Unit
fun setEvaluatedHandler(handler: (AndroidExtensionsExtension) -> Unit) {
onEvaluatedHandler = handler
}
open var isExperimental: Boolean = false
override fun configure(closure: Closure<*>): AndroidExtensionsExtension {
// ConfigureUtil is not used here to prevent infinite recursion
closure.resolveStrategy = Closure.DELEGATE_FIRST
closure.delegate = this
closure.call()
onEvaluatedHandler(this)
return this
}
}
@@ -38,8 +38,16 @@ import javax.xml.parsers.DocumentBuilderFactory
// Use apply plugin: 'kotlin-android-extensions' to enable Android Extensions in an Android project.
class AndroidExtensionsSubpluginIndicator : Plugin<Project> {
override fun apply(project: Project) {
project.extensions.create("androidExtensions", AndroidExtensionsExtension::class.java)
val extension = project.extensions.create("androidExtensions", AndroidExtensionsExtension::class.java)
extension.setEvaluatedHandler { evaluatedExtension ->
if (evaluatedExtension.isExperimental) {
addAndroidExtensionsRuntimeIfNeeded(project)
}
}
}
private fun addAndroidExtensionsRuntimeIfNeeded(project: Project) {
val kotlinPluginWrapper = project.plugins.findPlugin(KotlinAndroidPluginWrapper::class.java) ?: run {
project.logger.error("'kotlin-android' plugin should be enabled before 'kotlin-android-extensions'")
return