From 8c13df5be1b6eb2ba0a78af3e422961f2f99dfe3 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 23 Apr 2016 05:15:49 -0800 Subject: [PATCH] .kobalt find fixes. --- .../com/beust/kobalt/internal/build/BuildFile.kt | 14 +++++++++++--- .../main/kotlin/com/beust/kobalt/misc/KFiles.kt | 14 +++++--------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/build/BuildFile.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/build/BuildFile.kt index d77cb56a..e4efb9e9 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/build/BuildFile.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/build/BuildFile.kt @@ -1,5 +1,6 @@ package com.beust.kobalt.internal.build +import com.beust.kobalt.misc.KFiles import java.io.File import java.nio.file.Files import java.nio.file.Path @@ -9,10 +10,17 @@ import java.nio.file.attribute.BasicFileAttributes * @param path is the path where that file was moved, @param realPath is where the actual file is. */ class BuildFile(val path: Path, val name: String, val realPath: Path = path) { - public fun exists() : Boolean = Files.exists(path) + fun exists() : Boolean = Files.exists(path) - public val lastModified : Long + val lastModified : Long get() = Files.readAttributes(realPath, BasicFileAttributes::class.java).lastModifiedTime().toMillis() - public val directory : File get() = path.toFile().parentFile + val directory : File get() = path.toFile().parentFile + + /** + * @return the .kobalt directory where this build file will be compiled. + */ + val dotKobaltDir: File get() = File(directory.parentFile.parentFile, KFiles.KOBALT_DOT_DIR).apply { + mkdirs() + } } 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 ef1af4c2..71e16358 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 @@ -222,22 +222,18 @@ class KFiles { } } - fun findDotDir(startDir: File) : File { - var result = startDir - while (result != null && result.parentFile != null && ! File(result, KOBALT_DOT_DIR).exists()) { - result = result.parentFile + private fun findDotDir(buildFile: BuildFile) : File { + val result = File(buildFile.directory.parentFile.parentFile, KOBALT_DOT_DIR).apply { + mkdirs() } - if (result == null) { - throw IllegalArgumentException("Couldn't locate $KOBALT_DOT_DIR in $startDir") - } - return File(result, KOBALT_DOT_DIR) + return result } /** * The build location for build scripts is .kobalt/build */ fun findBuildScriptLocation(buildFile: BuildFile, jarFile: String) : String { - val result = joinDir(findDotDir(buildFile.directory).absolutePath, KFiles.SCRIPT_BUILD_DIR, jarFile) + val result = joinDir(buildFile.dotKobaltDir.absolutePath, KFiles.SCRIPT_BUILD_DIR, jarFile) log(2, "Script jar file: $result") return result }