Skip to content

Commit 1fc79aa

Browse files
authored
Merge pull request #57 from icerockdev/develop
Release 0.9.1
2 parents 65a343f + fd30dde commit 1fc79aa

27 files changed

Lines changed: 116 additions & 66 deletions

File tree

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
![moko-resources](img/logo.png)
2-
[![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](http://www.apache.org/licenses/LICENSE-2.0) [![Download](https://api.bintray.com/packages/icerockdev/moko/moko-resources/images/download.svg) ](https://bintray.com/icerockdev/moko/moko-resources/_latestVersion) ![kotlin-version](https://img.shields.io/badge/kotlin-1.3.70-orange)
2+
[![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](http://www.apache.org/licenses/LICENSE-2.0) [![Download](https://api.bintray.com/packages/icerockdev/moko/moko-resources/images/download.svg) ](https://bintray.com/icerockdev/moko/moko-resources/_latestVersion) ![kotlin-version](https://img.shields.io/badge/kotlin-1.3.71-orange)
33

44
# Mobile Kotlin resources
55
This is a Kotlin MultiPlatform library that provides access to the resources on iOS & Android with the support of the default system localization.
@@ -21,7 +21,7 @@ This is a Kotlin MultiPlatform library that provides access to the resources on
2121
- **StringDesc** for lifecycle-aware access to resources and unified localization on both platforms.
2222

2323
## Requirements
24-
- Gradle version 5.4.1+
24+
- Gradle version 5.6.4+
2525
- Android API 16+
2626
- iOS version 9.0+
2727

@@ -41,6 +41,8 @@ This is a Kotlin MultiPlatform library that provides access to the resources on
4141
- 0.8.0
4242
- kotlin 1.3.70
4343
- 0.9.0
44+
- kotlin 1.3.71
45+
- 0.9.1
4446

4547
## Installation
4648
root build.gradle
@@ -51,7 +53,7 @@ buildscript {
5153
}
5254
5355
dependencies {
54-
classpath "dev.icerock.moko:resources-generator:0.9.0"
56+
classpath "dev.icerock.moko:resources-generator:0.9.1"
5557
}
5658
}
5759
@@ -68,7 +70,7 @@ project build.gradle
6870
apply plugin: "dev.icerock.mobile.multiplatform-resources"
6971
7072
dependencies {
71-
commonMainApi("dev.icerock.moko:resources:0.9.0")
73+
commonMainApi("dev.icerock.moko:resources:0.9.1")
7274
}
7375
7476
multiplatformResources {

buildSrc/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ repositories {
1212
}
1313

1414
dependencies {
15-
implementation("dev.icerock:mobile-multiplatform:0.6.0")
16-
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.70")
17-
implementation("com.android.tools.build:gradle:3.6.1")
15+
implementation("dev.icerock:mobile-multiplatform:0.6.1")
16+
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.71")
17+
implementation("com.android.tools.build:gradle:3.6.2")
1818
}
1919

2020
kotlinDslPluginOptions {

buildSrc/src/main/kotlin/Versions.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ object Versions {
99
const val minSdk = 16
1010
}
1111

12-
const val kotlin = "1.3.70"
12+
const val kotlin = "1.3.71"
1313

14-
private const val mokoResources = "0.9.0"
14+
private const val mokoResources = "0.9.1"
1515

1616
object Plugins {
17-
const val android = "3.6.1"
17+
const val android = "3.6.2"
1818

1919
const val kotlin = Versions.kotlin
2020
const val mokoResources = Versions.mokoResources

gradle-plugin/src/main/kotlin/dev/icerock/gradle/MultiplatformResourcesPlugin.kt

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@
55
package dev.icerock.gradle
66

77
import com.android.build.gradle.LibraryExtension
8-
import dev.icerock.gradle.generator.*
8+
import dev.icerock.gradle.generator.AndroidMRGenerator
9+
import dev.icerock.gradle.generator.CommonMRGenerator
10+
import dev.icerock.gradle.generator.IosMRGenerator
11+
import dev.icerock.gradle.generator.MRGenerator
12+
import dev.icerock.gradle.generator.ResourceGeneratorFeature
13+
import dev.icerock.gradle.generator.SourceInfo
914
import dev.icerock.gradle.generator.fonts.FontsGeneratorFeature
1015
import dev.icerock.gradle.generator.image.ImagesGeneratorFeature
1116
import dev.icerock.gradle.generator.plurals.PluralsGeneratorFeature
@@ -44,8 +49,18 @@ class MultiplatformResourcesPlugin : Plugin<Project> {
4449
val multiplatformExtension =
4550
target.extensions.getByType(KotlinMultiplatformExtension::class)
4651

47-
val sourceSets = multiplatformExtension.sourceSets
48-
val commonSourceSet = sourceSets.getByName(mrExtension.sourceSetName)
52+
val sourceSets = multiplatformExtension.targets
53+
.flatMap { it.compilations }
54+
.filter { it.associateWith.isEmpty() } // filter all tests source sets
55+
.map { compilation ->
56+
if (compilation.target is KotlinAndroidTarget) {
57+
compilation.kotlinSourceSets.first { it.name == "androidMain" }
58+
} else {
59+
compilation.defaultSourceSet
60+
}
61+
}
62+
.distinct()
63+
val commonSourceSet = multiplatformExtension.sourceSets.getByName(mrExtension.sourceSetName)
4964
val commonResources = commonSourceSet.resources
5065

5166
val androidExtension = target.extensions.getByType(LibraryExtension::class)
@@ -57,7 +72,7 @@ class MultiplatformResourcesPlugin : Plugin<Project> {
5772
generateMultiplatformResources(
5873
project = target,
5974
commonResources = commonResources,
60-
sourceSets = sourceSets.filter { it.name.endsWith("Main") },
75+
sourceSets = sourceSets,
6176
extension = mrExtension,
6277
multiplatformExtension = multiplatformExtension,
6378
androidPackage = androidPackage
@@ -139,7 +154,7 @@ class MultiplatformResourcesPlugin : Plugin<Project> {
139154
info.generatedDir,
140155
info.sourceSet,
141156
info.mrClassPackage,
142-
generators = features.map{ it.createAndroidGenerator() }
157+
generators = features.map { it.createAndroidGenerator() }
143158
)
144159
}
145160
is KotlinNativeTarget -> {
@@ -149,7 +164,7 @@ class MultiplatformResourcesPlugin : Plugin<Project> {
149164
info.generatedDir,
150165
info.sourceSet,
151166
info.mrClassPackage,
152-
generators = features.map{ it.createiOSGenerator() }
167+
generators = features.map { it.createiOSGenerator() }
153168
)
154169
} else {
155170
println("unsupported native family $family")

gradle-plugin/src/main/kotlin/dev/icerock/gradle/generator/AndroidMRGenerator.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ class AndroidMRGenerator(
2929
project.tasks.getByName("preBuild").dependsOn(generationTask)
3030

3131
val androidExtension = project.extensions.getByType(LibraryExtension::class)
32-
val mainAndroidSet = androidExtension.sourceSets.getByName("main")
33-
mainAndroidSet.res.srcDir(resourcesGenerationDir)
32+
val referencedAndroidSet = androidExtension.sourceSets.first {
33+
val capitalized = it.name.capitalize()
34+
"android$capitalized" == sourceSet.name
35+
}
36+
referencedAndroidSet.res.srcDir(resourcesGenerationDir)
3437
}
3538
}

gradle-plugin/src/main/kotlin/dev/icerock/gradle/generator/BaseGenerator.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44

55
package dev.icerock.gradle.generator
66

7-
import com.squareup.kotlinpoet.*
7+
import com.squareup.kotlinpoet.ClassName
8+
import com.squareup.kotlinpoet.CodeBlock
9+
import com.squareup.kotlinpoet.KModifier
10+
import com.squareup.kotlinpoet.PropertySpec
11+
import com.squareup.kotlinpoet.TypeSpec
812
import dev.icerock.gradle.generator.strings.KeyType
913
import dev.icerock.gradle.generator.strings.LanguageType
1014
import java.io.File

gradle-plugin/src/main/kotlin/dev/icerock/gradle/generator/fonts/FontsGeneratorFeature.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@
44

55
package dev.icerock.gradle.generator.fonts
66

7+
import dev.icerock.gradle.generator.MRGenerator
78
import dev.icerock.gradle.generator.ResourceGeneratorFeature
89
import dev.icerock.gradle.generator.SourceInfo
9-
import dev.icerock.gradle.generator.MRGenerator
1010

1111

12-
class FontsGeneratorFeature(private val info: SourceInfo): ResourceGeneratorFeature(info) {
13-
private val stringsFileTree = info.commonResources.matching{
12+
class FontsGeneratorFeature(private val info: SourceInfo) : ResourceGeneratorFeature(info) {
13+
private val stringsFileTree = info.commonResources.matching {
1414
include("MR/fonts/**.ttf")
1515
}
1616

1717
override fun createCommonGenerator(): MRGenerator.Generator {
1818
return CommonFontsGenerator(info.sourceSet, stringsFileTree)
1919
}
2020

21-
override fun createiOSGenerator(): MRGenerator.Generator {
21+
override fun createiOSGenerator(): MRGenerator.Generator {
2222
return IosFontsGenerator(info.sourceSet, stringsFileTree)
2323
}
2424

gradle-plugin/src/main/kotlin/dev/icerock/gradle/generator/fonts/IosFontsGenerator.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,9 @@ package dev.icerock.gradle.generator.fonts
66

77
import com.squareup.kotlinpoet.CodeBlock
88
import com.squareup.kotlinpoet.KModifier
9-
import dev.icerock.gradle.generator.ExtendsPlistDictionary
10-
import dev.icerock.gradle.generator.IosMRGenerator
119
import org.gradle.api.file.FileTree
1210
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
13-
import org.w3c.dom.Document
14-
import org.w3c.dom.Node
1511
import java.io.File
16-
import javax.xml.parsers.DocumentBuilder
1712

1813
class IosFontsGenerator(
1914
sourceSet: KotlinSourceSet,

gradle-plugin/src/main/kotlin/dev/icerock/gradle/generator/image/AndroidImagesGenerator.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ class AndroidImagesGenerator(
2424
override fun getPropertyModifiers(): Array<KModifier> = arrayOf(KModifier.ACTUAL)
2525

2626
override fun getPropertyInitializer(key: String): CodeBlock? {
27-
return CodeBlock.of("ImageResource(R.drawable.%L)", key)
27+
val processedKey = processKey(key)
28+
return CodeBlock.of("ImageResource(R.drawable.%L)", processedKey)
2829
}
2930

3031
override fun getImports(): List<ClassName> = listOf(
@@ -53,7 +54,12 @@ class AndroidImagesGenerator(
5354
}
5455

5556
val drawableDir = File(resourcesGenerationDir, drawableDirName)
56-
file.copyTo(File(drawableDir, "$key.${file.extension}"))
57+
val processedKey = processKey(key)
58+
file.copyTo(File(drawableDir, "$processedKey.${file.extension}"))
5759
}
5860
}
61+
62+
private fun processKey(key: String): String {
63+
return key.toLowerCase()
64+
}
5965
}

gradle-plugin/src/main/kotlin/dev/icerock/gradle/generator/image/ImagesGenerator.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44

55
package dev.icerock.gradle.generator.image
66

7-
import com.squareup.kotlinpoet.*
7+
import com.squareup.kotlinpoet.ClassName
8+
import com.squareup.kotlinpoet.CodeBlock
9+
import com.squareup.kotlinpoet.KModifier
10+
import com.squareup.kotlinpoet.PropertySpec
11+
import com.squareup.kotlinpoet.TypeSpec
812
import dev.icerock.gradle.generator.MRGenerator
913
import org.gradle.api.file.FileTree
1014
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet

0 commit comments

Comments
 (0)