Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[gradle] A flag to disable multimodule resources. #4771

Merged
merged 4 commits into from
May 8, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ internal object ComposeProperties {
internal const val MAC_NOTARIZATION_PASSWORD = "compose.desktop.mac.notarization.password"
internal const val MAC_NOTARIZATION_TEAM_ID_PROVIDER = "compose.desktop.mac.notarization.teamID"
internal const val CHECK_JDK_VENDOR = "compose.desktop.packaging.checkJdkVendor"
internal const val ENABLE_MULTIMODULE_RESOURCES = "org.jetbrains.compose.resources.multimodule.enable"
internal const val DISABLE_MULTIMODULE_RESOURCES = "org.jetbrains.compose.resources.multimodule.disable"
internal const val SYNC_RESOURCES_PROPERTY = "compose.ios.resources.sync"

fun isVerbose(providers: ProviderFactory): Provider<Boolean> =
Expand Down Expand Up @@ -55,8 +55,8 @@ internal object ComposeProperties {
fun checkJdkVendor(providers: ProviderFactory): Provider<Boolean> =
providers.valueOrNull(CHECK_JDK_VENDOR).toBooleanProvider(true)

fun enableMultimoduleResources(providers: ProviderFactory): Provider<Boolean> =
providers.valueOrNull(ENABLE_MULTIMODULE_RESOURCES).toBooleanProvider(false)
fun disableMultimoduleResources(providers: ProviderFactory): Provider<Boolean> =
providers.valueOrNull(DISABLE_MULTIMODULE_RESOURCES).toBooleanProvider(false)

//providers.valueOrNull works only with root gradle.properties
fun dontSyncResources(project: Project): Provider<Boolean> = project.provider {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,20 +42,13 @@ private fun Project.onKgpApplied(config: Provider<ResourcesExtension>, kgp: Kotl
val hasKmpResources = extraProperties.has(KMP_RES_EXT)
val currentGradleVersion = GradleVersion.current()
val minGradleVersion = GradleVersion.version(MIN_GRADLE_VERSION_FOR_KMP_RESOURCES)
val enableMultimoduleResources = ComposeProperties.enableMultimoduleResources(providers).get()
val kmpResourcesAreAvailable = enableMultimoduleResources && hasKmpResources && currentGradleVersion >= minGradleVersion
val disableMultimoduleResources = ComposeProperties.disableMultimoduleResources(providers).get()
val kmpResourcesAreAvailable = !disableMultimoduleResources && hasKmpResources && currentGradleVersion >= minGradleVersion

if (kmpResourcesAreAvailable) {
configureKmpResources(kotlinExtension, extraProperties.get(KMP_RES_EXT)!!, config)
} else {
if (!enableMultimoduleResources) {
logger.info(
"""
Multimodule Compose Resources are disabled by default.
To enable it, add 'org.jetbrains.compose.resources.multimodule.enable=true' to the root gradle.properties file.
""".trimIndent()
)
} else {
if (!disableMultimoduleResources) {
if (!hasKmpResources) logger.info(
"""
Compose resources publication requires Kotlin Gradle Plugin >= 2.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ internal fun Project.configureKmpResources(
kotlinExtension as KotlinMultiplatformExtension
kmpResources as KotlinTargetResourcesPublication

logger.info("Configure KMP resources")
logger.info("Configure KMP resources")
terrakok marked this conversation as resolved.
Show resolved Hide resolved

val commonMain = KotlinSourceSet.COMMON_MAIN_SOURCE_SET_NAME
configureComposeResourcesGeneration(kotlinExtension, commonMain, config, true)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.jetbrains.compose.test.tests.integration

import org.gradle.util.GradleVersion
import org.jetbrains.compose.desktop.application.internal.ComposeProperties
import org.jetbrains.compose.internal.utils.*
import org.jetbrains.compose.resources.XmlValuesConverterTask
import org.jetbrains.compose.test.utils.*
Expand Down Expand Up @@ -240,6 +241,8 @@ class ResourcesTest : GradlePluginTestBase() {
}

gradle(":cmplib:publishAllPublicationsToMavenRepository").checks {
check.logContains("Configure KMP resources")

val resDir = file("cmplib/src/commonMain/composeResources")
val resourcesFiles = resDir.walkTopDown()
.filter { !it.isDirectory && !it.isHidden }
Expand Down Expand Up @@ -326,20 +329,17 @@ class ResourcesTest : GradlePluginTestBase() {
}

@Test
fun testOldResourcesWithNewKotlin() {
fun testDisableMultimoduleResourcesWithNewKotlin() {
val environment = defaultTestEnvironment.copy(
kotlinVersion = "2.0.0-RC2"
)
with(
testProject("misc/kmpResourcePublication", environment)
) {

with(testProject("misc/kmpResourcePublication", environment)) {
file("gradle.properties").modify { content ->
content.replace("org.jetbrains.compose.resources.multimodule.enable=true", "")
content + "\n" + ComposeProperties.DISABLE_MULTIMODULE_RESOURCES + "=true"
}

gradle(":cmplib:build").checks {
check.logContains("Multimodule Compose Resources are disabled by default.")
check.logContains("To enable it, add 'org.jetbrains.compose.resources.multimodule.enable=true' to the root gradle.properties file.")
check.logContains("Configure compose resources")
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,3 @@ android.useAndroidX=true
org.jetbrains.compose.experimental.uikit.enabled=true
org.jetbrains.compose.experimental.jscanvas.enabled=true
org.jetbrains.compose.experimental.wasm.enabled=true
org.jetbrains.compose.resources.multimodule.enable=true
Loading