mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-26 08:27:12 -07:00
Generate BuildConfig.
This commit is contained in:
parent
b6b2b655fb
commit
32f1f084a2
3 changed files with 41 additions and 26 deletions
|
@ -1,8 +1,6 @@
|
||||||
package com.beust.kobalt
|
package com.beust.kobalt
|
||||||
|
|
||||||
import com.beust.kobalt.api.BuildTypeConfig
|
import com.beust.kobalt.api.*
|
||||||
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 java.io.File
|
import java.io.File
|
||||||
|
@ -32,6 +30,13 @@ class Variant(val productFlavor: ProductFlavorConfig? = null, val buildType: Bui
|
||||||
log(2, "Adding source for product flavor ${it.name}: ${dir.path}")
|
log(2, "Adding source for product flavor ${it.name}: ${dir.path}")
|
||||||
result.add(dir)
|
result.add(dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Generated directory, if applicable
|
||||||
|
generatedSourceDirectory?.let {
|
||||||
|
result.add(it)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now that all the variant source directories have been added, add the project's default ones
|
||||||
result.addAll(sourceDirectories)
|
result.addAll(sourceDirectories)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
@ -56,4 +61,31 @@ class Variant(val productFlavor: ProductFlavorConfig? = null, val buildType: Bui
|
||||||
get() {
|
get() {
|
||||||
return productFlavor?.buildConfig != null || buildType?.buildConfig != null
|
return productFlavor?.buildConfig != null || buildType?.buildConfig != null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var generatedSourceDirectory: File? = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If either the Project or the current variant has a build config defined, generate BuildConfig.java
|
||||||
|
*/
|
||||||
|
fun maybeGenerateBuildConfig(project: Project, context: KobaltContext) {
|
||||||
|
fun generated(project: Project) = KFiles.joinDir(project.buildDirectory!!, "generated", "source")
|
||||||
|
|
||||||
|
if (project.buildConfig != null || context.variant.hasBuildConfig) {
|
||||||
|
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!!)
|
||||||
|
}
|
||||||
|
var pkg = project.packageName ?: project.group
|
||||||
|
?: throw KobaltException(
|
||||||
|
"packageName needs to be defined on the project in order to generate BuildConfig")
|
||||||
|
val code = project.projectInfo.generateBuildConfig(pkg, context.variant, buildConfigs)
|
||||||
|
generatedSourceDirectory = KFiles.makeDir(generated(project), pkg.replace('.', File.separatorChar))
|
||||||
|
val outputFile = File(generatedSourceDirectory, "BuildConfig" + project .sourceSuffix)
|
||||||
|
KFiles.saveFile(outputFile, code)
|
||||||
|
log(2, "Generated ${outputFile.path}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,8 +1,10 @@
|
||||||
package com.beust.kobalt.internal
|
package com.beust.kobalt.internal
|
||||||
|
|
||||||
import com.beust.kobalt.KobaltException
|
|
||||||
import com.beust.kobalt.TaskResult
|
import com.beust.kobalt.TaskResult
|
||||||
import com.beust.kobalt.api.*
|
import com.beust.kobalt.api.BasePlugin
|
||||||
|
import com.beust.kobalt.api.IProjectContributor
|
||||||
|
import com.beust.kobalt.api.KobaltContext
|
||||||
|
import com.beust.kobalt.api.Project
|
||||||
import com.beust.kobalt.api.annotation.ExportedProjectProperty
|
import com.beust.kobalt.api.annotation.ExportedProjectProperty
|
||||||
import com.beust.kobalt.api.annotation.Task
|
import com.beust.kobalt.api.annotation.Task
|
||||||
import com.beust.kobalt.maven.*
|
import com.beust.kobalt.maven.*
|
||||||
|
@ -148,30 +150,10 @@ abstract class JvmCompilerPlugin @Inject constructor(
|
||||||
|
|
||||||
@Task(name = JavaPlugin.TASK_COMPILE, description = "Compile the project")
|
@Task(name = JavaPlugin.TASK_COMPILE, description = "Compile the project")
|
||||||
fun taskCompile(project: Project) : TaskResult {
|
fun taskCompile(project: Project) : TaskResult {
|
||||||
maybeGenerateBuildConfig(project)
|
context.variant.maybeGenerateBuildConfig(project, context)
|
||||||
return doCompile(project, createCompilerActionInfo(project, context))
|
return doCompile(project, createCompilerActionInfo(project, context))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* If either the Project or the current variant has a build config defined, generate BuildConfig.java
|
|
||||||
*/
|
|
||||||
private fun maybeGenerateBuildConfig(project: Project) {
|
|
||||||
println("Maybe generate build config")
|
|
||||||
if (project.buildConfig != null || context.variant.hasBuildConfig) {
|
|
||||||
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!!)
|
|
||||||
}
|
|
||||||
var pkg = project.packageName ?: project.group
|
|
||||||
?: throw KobaltException("packageName needs to be defined on the project in order to generate " +
|
|
||||||
"BuildConfig")
|
|
||||||
val code = project.projectInfo.generateBuildConfig(pkg, context.variant, buildConfigs)
|
|
||||||
println("Generating: " + code)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Task(name = JavaPlugin.TASK_JAVADOC, description = "Run Javadoc")
|
@Task(name = JavaPlugin.TASK_JAVADOC, description = "Run Javadoc")
|
||||||
fun taskJavadoc(project: Project) = doJavadoc(project, createCompilerActionInfo(project, context))
|
fun taskJavadoc(project: Project) = doJavadoc(project, createCompilerActionInfo(project, context))
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@ class JavaProjectInfo : IProjectInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
add("}")
|
add("}")
|
||||||
|
add("")
|
||||||
}
|
}
|
||||||
|
|
||||||
return lines.joinToString("\n")
|
return lines.joinToString("\n")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue