From d4a4e26f14c2332fcf08f841702c5122a3f470c1 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 2 Mar 2016 00:00:06 +0400 Subject: [PATCH] BuildConfig generation fixes. --- .../com/beust/kobalt/internal/ProjectInfo.kt | 28 +++++++++++++++++++ .../kobalt/plugin/java/JavaBuildConfig.kt | 7 +---- .../kobalt/plugin/kotlin/KotlinBuildConfig.kt | 7 +---- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/ProjectInfo.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/ProjectInfo.kt index 550baf34..dccf9290 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/ProjectInfo.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/ProjectInfo.kt @@ -22,6 +22,34 @@ interface IBuildConfig { abstract class BaseBuildConfig : IBuildConfig { abstract fun generate(field: BuildConfigField) : String + /** + * Add all the fields found in 1) the field contributors 2) the build configs and 3) the default config + */ + fun generateCommonPart(project: Project, context: KobaltContext, buildConfigs: List) : List { + val result = arrayListOf() + + // Fields from the field contributors + result.addAll(generateFieldsFromContributors(project, context)) + + val seen = hashSetOf() + + // Fields from the build config + buildConfigs.forEach { + it.fields.forEach { field -> + result.add(generate(field.type, field.name, field.value)) + seen.add(field) + } + } + + // Add all the fields in the default config that haven't been added yet + project.defaultConfig?.let { + it.fields.filter { ! seen.contains(it) }.forEach { + result.add(generate(it.type, it.name, it.value)) + } + } + return result + } + fun generate(type: String, name: String, value: Any) = generate(BuildConfigField(type, name, value)) fun generateFieldsFromContributors(project: Project, context: KobaltContext) diff --git a/src/main/kotlin/com/beust/kobalt/plugin/java/JavaBuildConfig.kt b/src/main/kotlin/com/beust/kobalt/plugin/java/JavaBuildConfig.kt index 263caf88..1d329b06 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/java/JavaBuildConfig.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/java/JavaBuildConfig.kt @@ -30,13 +30,8 @@ class JavaBuildConfig : BaseBuildConfig() { "false" })) - addAll(generateFieldsFromContributors(project, context)) + addAll(generateCommonPart(project, context, buildConfigs)) - buildConfigs.forEach { - it.fields.forEach { field -> - add(generate(field.type, field.name, field.value)) - } - } add("}") add("") } diff --git a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinBuildConfig.kt b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinBuildConfig.kt index 4129f50e..0903e70c 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinBuildConfig.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinBuildConfig.kt @@ -31,13 +31,8 @@ class KotlinBuildConfig : BaseBuildConfig() { "false" })) - addAll(generateFieldsFromContributors(project, context)) + addAll(generateCommonPart(project, context, buildConfigs)) - buildConfigs.forEach { - it.fields.forEach { field -> - add(generate(field.type, field.name, field.value)) - } - } add(" }") add("}") add("")