jlleitschuh
04/13/2018, 12:00 AMfun <R> callBasedOnContext(
ifBuildScript: KotlinBuildScript.() -> R,
ifSettingsScript: KotlinSettingsScript.() -> R
): R {
val kotlinProjectClass: KClass<*> = KotlinBuildScript::class
val kotlinSettingsClass: KClass<*> = KotlinSettingsScript::class
return when {
kotlinProjectClass.isInstance(this) -> (this as KotlinBuildScript).ifBuildScript()
kotlinSettingsClass.isInstance(this) -> (this as KotlinSettingsScript).ifSettingsScript()
else -> throw AssertionError("$this is not being applied to a supported type.")
}
}
val extra: ExtraPropertiesExtension by lazy {
callBasedOnContext(
ifBuildScript = { (this as ExtensionAware).extra },
ifSettingsScript = { (settings as ExtensionAware).extra }
)
}
fun hasPropertyHelper(propertyName: String): Boolean {
return callBasedOnContext(
ifBuildScript = { hasProperty(propertyName) },
ifSettingsScript = { (settings as ExtensibleDynamicObject).hasProperty(propertyName) }
)
}
fun propertyHelper(propertyName: String): Any? {
return callBasedOnContext(
ifBuildScript = { property(propertyName) },
ifSettingsScript = { (settings as ExtensibleDynamicObject).getProperty(propertyName) }
)
}
Currently, I'm getting a:
java.lang.ClassCastException: org.gradle.initialization.DefaultSettings_Decorated cannot be cast to org.gradle.api.internal.ExtensibleDynamicObject
Just a note, I'm running Gradle 4.7