jlleitschuh
04/13/2018, 1:10 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 ExtensionAware).extra.properties.containsKey(propertyName) }
)
}
fun propertyHelper(propertyName: String): Any? {
return callBasedOnContext(
ifBuildScript = { property(propertyName) },
ifSettingsScript = { (settings as ExtensionAware).extra.properties[propertyName] }
)
}