From 6168e50c3f7c434bc1cb237772b7021107f1089d Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 8 Feb 2016 22:58:47 +0400 Subject: [PATCH] Fix BuildConfig. --- .../src/main/kotlin/com/beust/kobalt/Variant.kt | 4 +--- .../com/beust/kobalt/api/IBuildConfigContributor.kt | 5 +++++ .../com/beust/kobalt/internal/JvmCompilerPlugin.kt | 10 ++++++---- .../kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt | 6 +++--- .../com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt | 6 +++--- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt index 5dc72c37..4e980278 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt @@ -149,9 +149,7 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null, // that directory will be added when trying to find recursively all the sources in it generatedSourceDirectory = File(result.relativeTo(File(project.directory)).absolutePath) val outputGeneratedSourceDirectory = File(result, pkg.replace('.', File.separatorChar)) - val compilers = ActorUtils.selectAffinityActors(project, context, context.pluginInfo.compilerContributors) - val outputDir = File(outputGeneratedSourceDirectory, - "BuildConfig" + compilers[0].sourceSuffixes[0]) + val outputDir = File(outputGeneratedSourceDirectory, "BuildConfig" + contributor.suffix) KFiles.saveFile(outputDir, code) log(2, "Generated ${outputDir.path}") return result diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IBuildConfigContributor.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IBuildConfigContributor.kt index b92ee92f..67b2b332 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IBuildConfigContributor.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IBuildConfigContributor.kt @@ -8,4 +8,9 @@ import com.beust.kobalt.Variant interface IBuildConfigContributor : ISimpleAffinity { fun generateBuildConfig(project: Project, context: KobaltContext, packageName: String, variant: Variant, buildConfigs: List) : String + + /** + * The suffix of the generated BuildConfig, e.g. ".java". + */ + val suffix: String } diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt index 18cc5f33..e4293868 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt @@ -173,7 +173,8 @@ open class JvmCompilerPlugin @Inject constructor( } else { compilers.forEach { compiler -> if (containsSourceFiles(project, compiler)) { - val info = createCompilerActionInfo(project, context, isTest, sourceSuffixes = compiler.sourceSuffixes) + val info = createCompilerActionInfo(project, context, isTest, sourceDirectories, + sourceSuffixes = compiler.sourceSuffixes) val thisResult = compiler.compile(project, context, info) results.add(thisResult) if (!thisResult.success && failedResult == null) { @@ -214,7 +215,8 @@ open class JvmCompilerPlugin @Inject constructor( var result: TaskResult? = null compilers.forEach { compiler -> result = docGenerator.generateDoc(project, context, createCompilerActionInfo(project, context, - isTest = false, sourceSuffixes = compiler.sourceSuffixes)) + isTest = false, sourceDirectories = sourceDirectories, + sourceSuffixes = compiler.sourceSuffixes)) } return result!! } else { @@ -236,7 +238,7 @@ open class JvmCompilerPlugin @Inject constructor( * Runs all the contributors and interceptors relevant to that task. */ protected fun createCompilerActionInfo(project: Project, context: KobaltContext, isTest: Boolean, - sourceSuffixes: List): CompilerActionInfo { + sourceDirectories: Set, sourceSuffixes: List): CompilerActionInfo { copyResources(project, JvmCompilerPlugin.SOURCE_SET_MAIN) val fullClasspath = if (isTest) dependencyManager.testDependencies(project, context) @@ -252,8 +254,8 @@ open class JvmCompilerPlugin @Inject constructor( else File(project.classesDir(context)) buildDirectory.mkdirs() - val initialSourceDirectories = arrayListOf() + val initialSourceDirectories = ArrayList(sourceDirectories) // Source directories from the contributors initialSourceDirectories.addAll( if (isTest) { diff --git a/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt index f1cb528d..494db89f 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt @@ -62,9 +62,9 @@ class JavaPlugin @Inject constructor(val javaCompiler: JavaCompiler) = project.sourceDirectoriesTest.map { File(it) }.toList() // IBuildConfigContributor - override fun affinity(project: Project): Int { - return if (project.projectExtra.suffixesFound.contains("java")) 1 else 0 - } + override fun affinity(project: Project) = if (project.projectExtra.suffixesFound.contains("java")) 1 else 0 + + override val suffix = ".java" override fun generateBuildConfig(project: Project, context: KobaltContext, packageName: String, variant: Variant, buildConfigs: List): String { diff --git a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt index 6c9a278b..e5df85e2 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt @@ -127,9 +127,9 @@ class KotlinPlugin @Inject constructor(val executors: KobaltExecutors) } // IBuildConfigContributor - override fun affinity(project: Project): Int { - return if (project.projectExtra.suffixesFound.contains("kotlin")) 2 else 0 - } + override fun affinity(project: Project) = if (project.projectExtra.suffixesFound.contains("kotlin")) 2 else 0 + + override val suffix = ".kt" override fun generateBuildConfig(project: Project, context: KobaltContext, packageName: String, variant: Variant, buildConfigs: List): String {