From 645256f9f65887a06109ddbe9b2436e9bc1f50dd Mon Sep 17 00:00:00 2001 From: Konstantin Tskhovrebov Date: Mon, 8 Apr 2024 21:26:31 +0200 Subject: [PATCH] [gradle] Allow to have equal named xml values files in different source sets for the same target All strings.xml will be packed in the same directory. Hence, we need to add an original source set name to the converted CVR file. --- .../resources/PrepareComposeResources.kt | 10 +++++++-- .../test/tests/integration/ResourcesTest.kt | 3 ++- .../my/lib/res/String0.androidMain.kt | 3 ++- .../my/lib/res/Plurals0.commonMain.kt | 3 ++- .../my/lib/res/String0.commonMain.kt | 21 ++++++++++++------- .../my/lib/res/String0.desktopMain.kt | 3 ++- .../resources/String0.androidMain.kt | 3 ++- .../resources/Plurals0.commonMain.kt | 3 ++- .../generated/resources/String0.commonMain.kt | 21 ++++++++++++------- .../resources/String0.desktopMain.kt | 3 ++- .../{android_strings.xml => strings.xml} | 0 11 files changed, 50 insertions(+), 23 deletions(-) rename gradle-plugins/compose/src/test/test-projects/misc/commonResources/src/androidMain/composeResources/values/{android_strings.xml => strings.xml} (100%) diff --git a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/PrepareComposeResources.kt b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/PrepareComposeResources.kt index 1422bff3722..d4ac4c619a0 100644 --- a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/PrepareComposeResources.kt +++ b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/PrepareComposeResources.kt @@ -25,6 +25,7 @@ internal fun Project.registerPrepareComposeResourcesTask( "convertXmlValueResourcesFor${sourceSet.name.uppercaseFirstChar()}", XmlValuesConverterTask::class.java ) { task -> + task.fileSuffix.set(sourceSet.name) task.originalResourcesDir.set(userComposeResourcesDir) task.outputDir.set(preparedComposeResourcesDir) } @@ -137,6 +138,9 @@ internal abstract class XmlValuesConverterTask : DefaultTask() { private const val FORMAT_VERSION = 0 } + @get:Input + abstract val fileSuffix: Property + @get:Internal abstract val originalResourcesDir: DirectoryProperty @@ -151,12 +155,14 @@ internal abstract class XmlValuesConverterTask : DefaultTask() { @get:OutputFiles val realOutputFiles = outputDir.map { dir -> - dir.asFileTree.matching { it.include("values*/*.$CONVERTED_RESOURCE_EXT") } + val suffix = fileSuffix.get() + dir.asFileTree.matching { it.include("values*/*.$suffix.$CONVERTED_RESOURCE_EXT") } } @TaskAction fun run() { val outDir = outputDir.get().asFile + val suffix = fileSuffix.get() realOutputFiles.get().forEach { f -> f.delete() } originalResourcesDir.get().asFile.listNotHiddenFiles().forEach { valuesDir -> if (valuesDir.isDirectory && valuesDir.name.startsWith("values")) { @@ -164,7 +170,7 @@ internal abstract class XmlValuesConverterTask : DefaultTask() { if (f.extension.equals("xml", true)) { val output = outDir .resolve(f.parentFile.name) - .resolve(f.nameWithoutExtension + ".$CONVERTED_RESOURCE_EXT") + .resolve(f.nameWithoutExtension + ".$suffix.$CONVERTED_RESOURCE_EXT") output.parentFile.mkdirs() convert(f, output) } diff --git a/gradle-plugins/compose/src/test/kotlin/org/jetbrains/compose/test/tests/integration/ResourcesTest.kt b/gradle-plugins/compose/src/test/kotlin/org/jetbrains/compose/test/tests/integration/ResourcesTest.kt index 8df1fdfff00..9253faca18f 100644 --- a/gradle-plugins/compose/src/test/kotlin/org/jetbrains/compose/test/tests/integration/ResourcesTest.kt +++ b/gradle-plugins/compose/src/test/kotlin/org/jetbrains/compose/test/tests/integration/ResourcesTest.kt @@ -382,7 +382,8 @@ class ResourcesTest : GradlePluginTestBase() { file.parentFile.name.startsWith("value") && file.extension.equals("xml", true) ) { - file.parentFile.resolve(file.nameWithoutExtension + "." + XmlValuesConverterTask.CONVERTED_RESOURCE_EXT) + val cvrSuffix = file.parentFile.parentFile.parentFile.name + file.parentFile.resolve("${file.nameWithoutExtension}.$cvrSuffix.${XmlValuesConverterTask.CONVERTED_RESOURCE_EXT}") } else { file } diff --git a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/androidMainResourceAccessors/my/lib/res/String0.androidMain.kt b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/androidMainResourceAccessors/my/lib/res/String0.androidMain.kt index a6189feb773..c657bcaa880 100644 --- a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/androidMainResourceAccessors/my/lib/res/String0.androidMain.kt +++ b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/androidMainResourceAccessors/my/lib/res/String0.androidMain.kt @@ -20,6 +20,7 @@ public val Res.string.android_str: StringResource private fun init_android_str(): StringResource = org.jetbrains.compose.resources.StringResource( "string:android_str", "android_str", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/android_strings.cvr", 10, 39), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.androidMain.cvr", 10, + 39), ) ) \ No newline at end of file diff --git a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/Plurals0.commonMain.kt b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/Plurals0.commonMain.kt index bb958ce7e8f..a41fe0fadc9 100644 --- a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/Plurals0.commonMain.kt +++ b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/Plurals0.commonMain.kt @@ -21,6 +21,7 @@ private fun init_numberOfSongsAvailable(): PluralStringResource = org.jetbrains.compose.resources.PluralStringResource( "plurals:numberOfSongsAvailable", "numberOfSongsAvailable", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 10, 124), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 10, + 124), ) ) \ No newline at end of file diff --git a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/String0.commonMain.kt b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/String0.commonMain.kt index 5adf02985b7..c7848ef50df 100644 --- a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/String0.commonMain.kt +++ b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/commonMainResourceAccessors/my/lib/res/String0.commonMain.kt @@ -38,7 +38,8 @@ public val Res.string.PascalCase: StringResource private fun init_PascalCase(): StringResource = org.jetbrains.compose.resources.StringResource( "string:PascalCase", "PascalCase", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 172, 34), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 172, + 34), ) ) @@ -50,7 +51,8 @@ public val Res.string._1_kebab_case: StringResource private fun init__1_kebab_case(): StringResource = org.jetbrains.compose.resources.StringResource( "string:_1_kebab_case", "_1_kebab_case", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 135, 36), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 135, + 36), ) ) @@ -62,7 +64,8 @@ public val Res.string.app_name: StringResource private fun init_app_name(): StringResource = org.jetbrains.compose.resources.StringResource( "string:app_name", "app_name", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 207, 44), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 207, + 44), ) ) @@ -74,7 +77,8 @@ public val Res.string.camelCase: StringResource private fun init_camelCase(): StringResource = org.jetbrains.compose.resources.StringResource( "string:camelCase", "camelCase", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 252, 29), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 252, + 29), ) ) @@ -86,7 +90,8 @@ public val Res.string.hello: StringResource private fun init_hello(): StringResource = org.jetbrains.compose.resources.StringResource( "string:hello", "hello", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 282, 37), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 282, + 37), ) ) @@ -98,7 +103,8 @@ public val Res.string.multi_line: StringResource private fun init_multi_line(): StringResource = org.jetbrains.compose.resources.StringResource( "string:multi_line", "multi_line", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 320, 178), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 320, + 178), ) ) @@ -110,6 +116,7 @@ public val Res.string.str_template: StringResource private fun init_str_template(): StringResource = org.jetbrains.compose.resources.StringResource( "string:str_template", "str_template", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 499, 76), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 499, + 76), ) ) \ No newline at end of file diff --git a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/desktopMainResourceAccessors/my/lib/res/String0.desktopMain.kt b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/desktopMainResourceAccessors/my/lib/res/String0.desktopMain.kt index c3d38dd56be..50c85b8d351 100644 --- a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/desktopMainResourceAccessors/my/lib/res/String0.desktopMain.kt +++ b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected-open-res/desktopMainResourceAccessors/my/lib/res/String0.desktopMain.kt @@ -20,6 +20,7 @@ public val Res.string.desktop_str: StringResource private fun init_desktop_str(): StringResource = org.jetbrains.compose.resources.StringResource( "string:desktop_str", "desktop_str", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/desktop_strings.cvr", 10, 39), + org.jetbrains.compose.resources.ResourceItem(setOf(), + "values/desktop_strings.desktopMain.cvr", 10, 39), ) ) \ No newline at end of file diff --git a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/androidMainResourceAccessors/app/group/resources_test/generated/resources/String0.androidMain.kt b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/androidMainResourceAccessors/app/group/resources_test/generated/resources/String0.androidMain.kt index 47cca2eab0f..a76ea38a4e2 100644 --- a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/androidMainResourceAccessors/app/group/resources_test/generated/resources/String0.androidMain.kt +++ b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/androidMainResourceAccessors/app/group/resources_test/generated/resources/String0.androidMain.kt @@ -20,6 +20,7 @@ internal val Res.string.android_str: StringResource private fun init_android_str(): StringResource = org.jetbrains.compose.resources.StringResource( "string:android_str", "android_str", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/android_strings.cvr", 10, 39), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.androidMain.cvr", 10, + 39), ) ) \ No newline at end of file diff --git a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/Plurals0.commonMain.kt b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/Plurals0.commonMain.kt index a9fad6f5ff5..f4fa373e40b 100644 --- a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/Plurals0.commonMain.kt +++ b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/Plurals0.commonMain.kt @@ -21,6 +21,7 @@ private fun init_numberOfSongsAvailable(): PluralStringResource = org.jetbrains.compose.resources.PluralStringResource( "plurals:numberOfSongsAvailable", "numberOfSongsAvailable", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 10, 124), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 10, + 124), ) ) \ No newline at end of file diff --git a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/String0.commonMain.kt b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/String0.commonMain.kt index f5f1f5966d9..ddfe1791a4b 100644 --- a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/String0.commonMain.kt +++ b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/commonMainResourceAccessors/app/group/resources_test/generated/resources/String0.commonMain.kt @@ -38,7 +38,8 @@ internal val Res.string.PascalCase: StringResource private fun init_PascalCase(): StringResource = org.jetbrains.compose.resources.StringResource( "string:PascalCase", "PascalCase", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 172, 34), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 172, + 34), ) ) @@ -50,7 +51,8 @@ internal val Res.string._1_kebab_case: StringResource private fun init__1_kebab_case(): StringResource = org.jetbrains.compose.resources.StringResource( "string:_1_kebab_case", "_1_kebab_case", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 135, 36), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 135, + 36), ) ) @@ -62,7 +64,8 @@ internal val Res.string.app_name: StringResource private fun init_app_name(): StringResource = org.jetbrains.compose.resources.StringResource( "string:app_name", "app_name", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 207, 44), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 207, + 44), ) ) @@ -74,7 +77,8 @@ internal val Res.string.camelCase: StringResource private fun init_camelCase(): StringResource = org.jetbrains.compose.resources.StringResource( "string:camelCase", "camelCase", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 252, 29), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 252, + 29), ) ) @@ -86,7 +90,8 @@ internal val Res.string.hello: StringResource private fun init_hello(): StringResource = org.jetbrains.compose.resources.StringResource( "string:hello", "hello", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 282, 37), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 282, + 37), ) ) @@ -98,7 +103,8 @@ internal val Res.string.multi_line: StringResource private fun init_multi_line(): StringResource = org.jetbrains.compose.resources.StringResource( "string:multi_line", "multi_line", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 320, 178), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 320, + 178), ) ) @@ -110,6 +116,7 @@ internal val Res.string.str_template: StringResource private fun init_str_template(): StringResource = org.jetbrains.compose.resources.StringResource( "string:str_template", "str_template", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.cvr", 499, 76), + org.jetbrains.compose.resources.ResourceItem(setOf(), "values/strings.commonMain.cvr", 499, + 76), ) ) \ No newline at end of file diff --git a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/desktopMainResourceAccessors/app/group/resources_test/generated/resources/String0.desktopMain.kt b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/desktopMainResourceAccessors/app/group/resources_test/generated/resources/String0.desktopMain.kt index afe6a811502..aa67ed8e2da 100644 --- a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/desktopMainResourceAccessors/app/group/resources_test/generated/resources/String0.desktopMain.kt +++ b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/expected/desktopMainResourceAccessors/app/group/resources_test/generated/resources/String0.desktopMain.kt @@ -20,6 +20,7 @@ internal val Res.string.desktop_str: StringResource private fun init_desktop_str(): StringResource = org.jetbrains.compose.resources.StringResource( "string:desktop_str", "desktop_str", setOf( - org.jetbrains.compose.resources.ResourceItem(setOf(), "values/desktop_strings.cvr", 10, 39), + org.jetbrains.compose.resources.ResourceItem(setOf(), + "values/desktop_strings.desktopMain.cvr", 10, 39), ) ) \ No newline at end of file diff --git a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/src/androidMain/composeResources/values/android_strings.xml b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/src/androidMain/composeResources/values/strings.xml similarity index 100% rename from gradle-plugins/compose/src/test/test-projects/misc/commonResources/src/androidMain/composeResources/values/android_strings.xml rename to gradle-plugins/compose/src/test/test-projects/misc/commonResources/src/androidMain/composeResources/values/strings.xml