aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Jaros <rjaros@finn.pl>2019-11-07 13:34:32 +0100
committerRobert Jaros <rjaros@finn.pl>2019-11-07 13:34:32 +0100
commita0fccbf115d58e0794d33a06ef871a570fcf643e (patch)
tree323dc30454ba1d5610cbf735955b5e83ab5e84d1
parent81e59d6384b9989161f08a79287670a78be030a4 (diff)
downloadkvision-a0fccbf115d58e0794d33a06ef871a570fcf643e.tar.gz
kvision-a0fccbf115d58e0794d33a06ef871a570fcf643e.tar.bz2
kvision-a0fccbf115d58e0794d33a06ef871a570fcf643e.zip
Better function to guess the build folder in plugin.
-rw-r--r--kvision-tools/kvision-compiler-plugin/src/main/kotlin/pl/treksoft/kvision/plugin/KVProcessor.kt12
1 files changed, 10 insertions, 2 deletions
diff --git a/kvision-tools/kvision-compiler-plugin/src/main/kotlin/pl/treksoft/kvision/plugin/KVProcessor.kt b/kvision-tools/kvision-compiler-plugin/src/main/kotlin/pl/treksoft/kvision/plugin/KVProcessor.kt
index 43d83aef..e09c9021 100644
--- a/kvision-tools/kvision-compiler-plugin/src/main/kotlin/pl/treksoft/kvision/plugin/KVProcessor.kt
+++ b/kvision-tools/kvision-compiler-plugin/src/main/kotlin/pl/treksoft/kvision/plugin/KVProcessor.kt
@@ -61,9 +61,17 @@ class KVProcessor : AbstractProcessor() {
if (it is Element.ClassElement && it.classDescriptor.name.asString().startsWith("I")
&& it.classDescriptor.name.asString().endsWith("Service")
) {
+ tailrec fun findBuildFolder(path: String): String {
+ val preSrcDir = path.substringBeforeLast("/src")
+ return if (path == preSrcDir || File(preSrcDir, "build").isDirectory) {
+ "$preSrcDir/build"
+ } else {
+ findBuildFolder(preSrcDir)
+ }
+ }
+
val cl = it.classDescriptor
- val projectFolder = cl.canonicalFilePath()?.split("/src")?.get(0) ?: ""
- val buildFolder = "$projectFolder/build"
+ val buildFolder = cl.canonicalFilePath()?.let { path -> findBuildFolder(path) }
val genRootDir = File(buildFolder, "generated-src").apply {
mkdirs()
}