1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 08:27:12 -07:00

BuildConfig generation fixes.

This commit is contained in:
Cedric Beust 2016-03-02 00:00:06 +04:00
parent 31395cea91
commit d4a4e26f14
3 changed files with 30 additions and 12 deletions

View file

@ -22,6 +22,34 @@ interface IBuildConfig {
abstract class BaseBuildConfig : IBuildConfig { abstract class BaseBuildConfig : IBuildConfig {
abstract fun generate(field: BuildConfigField) : String 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<BuildConfig>) : List<String> {
val result = arrayListOf<String>()
// Fields from the field contributors
result.addAll(generateFieldsFromContributors(project, context))
val seen = hashSetOf<BuildConfig.Field>()
// 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 generate(type: String, name: String, value: Any) = generate(BuildConfigField(type, name, value))
fun generateFieldsFromContributors(project: Project, context: KobaltContext) fun generateFieldsFromContributors(project: Project, context: KobaltContext)

View file

@ -30,13 +30,8 @@ class JavaBuildConfig : BaseBuildConfig() {
"false" "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("") add("")
} }

View file

@ -31,13 +31,8 @@ class KotlinBuildConfig : BaseBuildConfig() {
"false" "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("}") add("}")
add("") add("")