Skip to content

Commit 4261ee2

Browse files
committed
* Added back dependencies caching
1 parent 09e440d commit 4261ee2

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

src/main/kotlin/kscript/app/KscriptHandler.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@ class KscriptHandler(private val config: Config, private val docopt: DocOptWrapp
5151
}
5252

5353
val script = scriptResolver.resolve(docopt.getString("script"), preambles)
54-
val resolvedDependencies = DependencyResolver(script.repositories).resolve(script.dependencies)
54+
val resolvedDependencies = appDir.cache.getOrCreateDependencies(script.digest) {
55+
DependencyResolver(script.repositories).resolve(script.dependencies)
56+
}
5557
val executor = Executor(CommandResolver(config, script), config)
5658

5759
// Create temporary dev environment

src/main/kotlin/kscript/app/appdir/Cache.kt

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package kscript.app.appdir
22

33
import kscript.app.creator.JarArtifact
4-
import kscript.app.model.ScriptType
54
import kscript.app.model.Content
5+
import kscript.app.model.ScriptType
66
import org.apache.commons.codec.digest.DigestUtils
77
import java.net.URI
88
import java.net.URL
@@ -66,6 +66,26 @@ class Cache(private val path: Path) {
6666
return content
6767
}
6868

69+
fun getOrCreateDependencies(digest: String, creator: () -> Set<Path>): Set<Path> {
70+
val directory = path.resolve("dependencies_$digest")
71+
val contentFile = directory.resolve("dependencies.content")
72+
73+
if (directory.exists()) {
74+
val dependencies = contentFile.readText().lines().map { Paths.get(it) }.toSet()
75+
76+
//Recheck cached paths - if there are missing artifacts skip the cached values
77+
if (dependencies.all { it.exists() }) {
78+
return dependencies
79+
}
80+
}
81+
82+
val dependencies = creator()
83+
directory.createDirectories()
84+
contentFile.writeText(dependencies.joinToString("\n") { it.toString() })
85+
86+
return dependencies
87+
}
88+
6989
private fun directoryCache(path: Path, creator: (Path) -> Path): Path {
7090
return if (path.exists()) {
7191
path

0 commit comments

Comments
 (0)