From 1c9514ede8babc7240613b6597feda8451252c01 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 9 Jul 2016 02:42:16 -0800 Subject: [PATCH] Temporary hack to fix annotation processing builds. --- .../beust/kobalt/internal/CompilerUtils.kt | 22 +++++++++---------- .../kotlin/com/beust/kobalt/misc/KFiles.kt | 16 ++++++++++++++ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/CompilerUtils.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/CompilerUtils.kt index 90fbca37..e11a78f1 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/CompilerUtils.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/CompilerUtils.kt @@ -82,7 +82,13 @@ class CompilerUtils @Inject constructor(val files: KFiles, // The classpath needs to contain $buildDirectory/classes as well so that projects that contain // multiple languages can use classes compiled by the compiler run before them. - if (buildDirectory.exists()) { + fun containsClassFiles(dir: File) = + KFiles.containsCertainFile(dir) { + it.isFile && it.name.endsWith("class") + } + +// if (buildDirectory.exists()) { + if (containsClassFiles(buildDirectory)) { classpath += FileDependency(buildDirectory.path) } @@ -129,18 +135,10 @@ class CompilerUtils @Inject constructor(val files: KFiles, // is compiler agnostic, doesn't hardcode Kotlin specific stuff val extraSourceFiles = arrayListOf() - fun containsJavaFiles(dir: File) : Boolean { - if (dir.isDirectory) { - val directories = arrayListOf() - dir.listFiles().forEach { - if (it.isFile && it.name.endsWith("java")) return true - if (it.isDirectory) directories.add(it) - } - return directories.any { containsJavaFiles(it) } - } else { - return false + fun containsJavaFiles(dir: File) = + KFiles.containsCertainFile(dir) { + it.isFile && it.name.endsWith("java") } - } if (sourceSuffixes.any { it.contains("kt")}) { val directories = if (isTest) project.sourceDirectoriesTest else project.sourceDirectories diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt index 716ece93..19d017c4 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt @@ -330,6 +330,22 @@ class KFiles { } fun isResource(name: String) = name.contains("res") || name.contains("resources") + + /** + * @return true as soon as a file meeting the condition is found. + */ + fun containsCertainFile(dir: File, condition: (File) -> Boolean) : Boolean { + if (dir.isDirectory) { + val directories = arrayListOf() + dir.listFiles().forEach { + if (condition(it)) return true + if (it.isDirectory) directories.add(it) + } + return directories.any { containsCertainFile(it, condition) } + } else { + return false + } + } } fun findRecursively(directory: File, function: Function1): List {