fun propertyAccess()

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")}")
            }
        }