in buildSrc/src/main/kotlin/org/jetbrains/compose/reload/build/tasks/GenerateHotReloadEnvironmentTask.kt [152:186]
fun propertyAccess(property: DeclaredHotReloadProperty): String? {
/* Only create access for properties that exist outside the build environment */
if (listOf(DeclaredHotReloadProperty.Target.DevTools, DeclaredHotReloadProperty.Target.Application)
.intersect(property.targets.toSet()).isEmpty()
) return null
return """
/**
* See [HotReloadProperty.{{name}}]
* {{documentation}}
*/
{{visibility}} public val {{propertyName}}: {{type}} get() {
{{statement}}
}
""".trimIndent().asTemplateOrThrow().renderOrThrow {
"name"(property.name)
property.documentation?.lines()?.forEach { line ->
"documentation"(line)
}
"visibility"(property.visibilityAnnotation)
"propertyName"(property.name.replaceFirstChar { it.lowercase() })
"type"(property.toKotlinType())
"statement"("val value = System.getProperty(\"${property.key}\")")
"statement"(" ?: System.getenv(\"${property.key}\")")
if (property.default != null) {
"statement"(" ?: ${property.renderDefault()}")
} else {
"statement"(" ?: return null")
}
"statement"("return ${property.convertTypeCode("value")}")
}
}