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

Fix #51: BuildConfig not generated.

This commit is contained in:
Cedric Beust 2015-11-24 22:24:56 -08:00
parent c90aca0c7d
commit 1d6d98a0ed

View file

@ -1,11 +1,6 @@
package com.beust.kobalt package com.beust.kobalt
import com.beust.kobalt.api.BuildConfig import com.beust.kobalt.api.*
import com.beust.kobalt.api.BuildTypeConfig
import com.beust.kobalt.api.Kobalt
import com.beust.kobalt.api.KobaltContext
import com.beust.kobalt.api.ProductFlavorConfig
import com.beust.kobalt.api.Project
import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.KFiles
import com.beust.kobalt.misc.log import com.beust.kobalt.misc.log
import com.beust.kobalt.plugin.android.AndroidFiles import com.beust.kobalt.plugin.android.AndroidFiles
@ -75,26 +70,40 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null,
val shortArchiveName = productFlavor.name + "-" + buildType.name val shortArchiveName = productFlavor.name + "-" + buildType.name
val hasBuildConfig: Boolean
get() {
return productFlavor.buildConfig != null || buildType.buildConfig != null
}
var generatedSourceDirectory: File? = null var generatedSourceDirectory: File? = null
private fun findBuildTypeBuildConfig(project: Project, variant: Variant?) : BuildConfig? {
val buildTypeName = variant?.buildType?.name
return project.buildTypes.getRaw(buildTypeName)?.buildConfig ?: null
}
private fun findProductFlavorBuildConfig(project: Project, variant: Variant?) : BuildConfig? {
val buildTypeName = variant?.productFlavor?.name
return project.productFlavors.getRaw(buildTypeName)?.buildConfig ?: null
}
/** /**
* If either the Project or the current variant has a build config defined, generate BuildConfig.java * Return a list of the BuildConfigs found on the productFlavor{}, buildType{} and project{} (in that order).
*/
private fun findBuildConfigs(project: Project, variant: Variant?) : List<BuildConfig> {
val result = listOf(
findBuildTypeBuildConfig(project, variant),
findProductFlavorBuildConfig(project, variant),
project.buildConfig)
.filterNotNull()
return result
}
/**
* Generate BuildConfig.java. Also look up if any BuildConfig is defined on the current build type,
* product flavor or main project, and use them to generate any additional field (in that order to
* respect the priorities).
*/ */
fun maybeGenerateBuildConfig(project: Project, context: KobaltContext) { fun maybeGenerateBuildConfig(project: Project, context: KobaltContext) {
fun generated(project: Project) = KFiles.joinDir(AndroidFiles.generated(project), "source") fun generated(project: Project) = KFiles.joinDir(AndroidFiles.generated(project), "source")
if (project.buildConfig != null || context.variant.hasBuildConfig) { val buildConfigs = findBuildConfigs(project, context.variant)
val buildConfigs = arrayListOf<BuildConfig>()
if (project.buildConfig != null) buildConfigs.add(project.buildConfig!!)
with (context.variant) {
if (buildType.buildConfig != null) buildConfigs.add(buildType.buildConfig!!)
if (productFlavor.buildConfig != null) buildConfigs.add(productFlavor.buildConfig!!)
}
val androidConfig = (Kobalt.findPlugin("android") as AndroidPlugin).configurationFor(project) val androidConfig = (Kobalt.findPlugin("android") as AndroidPlugin).configurationFor(project)
val pkg = androidConfig?.applicationId ?: project.packageName ?: project.group val pkg = androidConfig?.applicationId ?: project.packageName ?: project.group
@ -107,7 +116,6 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null,
KFiles.saveFile(outputFile, code) KFiles.saveFile(outputFile, code)
log(2, "Generated ${outputFile.path}") log(2, "Generated ${outputFile.path}")
} }
}
override fun toString() = toTask("") override fun toString() = toTask("")