From cae28c515cd1e6740cff8765de1e8f9fc99917a0 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Wed, 28 Oct 2015 07:21:19 -0700 Subject: [PATCH] Make ArtifactFetcher use Kurl. --- .../com/beust/kobalt/maven/ArtifactFetcher.kt | 18 ++++-------------- src/main/kotlin/com/beust/kobalt/maven/Kurl.kt | 14 ++++++-------- .../kobalt/plugin/android/AndroidPlugin.kt | 2 +- .../com/beust/kobalt/plugin/java/JavaPlugin.kt | 3 ++- 4 files changed, 13 insertions(+), 24 deletions(-) diff --git a/src/main/kotlin/com/beust/kobalt/maven/ArtifactFetcher.kt b/src/main/kotlin/com/beust/kobalt/maven/ArtifactFetcher.kt index 4294b840..9a188ff2 100644 --- a/src/main/kotlin/com/beust/kobalt/maven/ArtifactFetcher.kt +++ b/src/main/kotlin/com/beust/kobalt/maven/ArtifactFetcher.kt @@ -47,15 +47,6 @@ class ArtifactFetcher @Inject constructor(@Assisted("url") val url: String, fun create(@Assisted("url") url: String, @Assisted("fileName") fileName: String) : ArtifactFetcher } - /** The Kotlin compiler is about 17M and downloading it with the default buffer size takes forever */ - private val estimatedSize: Int - get() = if (url.contains("kotlin-compiler")) 18000000 else 1000000 - - private fun getBytes(url: String) : ByteArray { - log(2, "$url: downloading to $fileName") - return Kurl(url, http).bytes - } - override fun call() : File { val k = Kurl(url + ".md5", http) val remoteMd5 = @@ -64,15 +55,14 @@ class ArtifactFetcher @Inject constructor(@Assisted("url") val url: String, val file = File(fileName) file.parentFile.mkdirs() - val bytes = getBytes(url) - if (remoteMd5 != null && remoteMd5 != Md5.toMd5(bytes)) { + Kurl(url, http).toFile(file) + log(1, " Downloaded $url") + + if (remoteMd5 != null && remoteMd5 != Md5.toMd5(file)) { throw KobaltException("MD5 not matching for $url") } else { log(2, "No md5 found for $url, skipping md5 check") } - files.saveFile(file, bytes) - - log(1, "Downloaded $url") return file } diff --git a/src/main/kotlin/com/beust/kobalt/maven/Kurl.kt b/src/main/kotlin/com/beust/kobalt/maven/Kurl.kt index 05f617d5..f0966a89 100644 --- a/src/main/kotlin/com/beust/kobalt/maven/Kurl.kt +++ b/src/main/kotlin/com/beust/kobalt/maven/Kurl.kt @@ -7,7 +7,6 @@ import java.net.HttpURLConnection import java.net.URL import java.net.URLConnection import javax.inject.Inject -import kotlin.properties.Delegates /** * Abstracts a URL so that it works transparently on either http:// or file:// @@ -34,14 +33,13 @@ public class Kurl @Inject constructor(@Assisted val url: String, val http: Http) return result } - val estimatedSize = 18000000 + /** The Kotlin compiler is about 17M and downloading it with the default buffer size takes forever */ + private val estimatedSize: Int + get() = if (url.contains("kotlin-compiler")) 18000000 else 1000000 - val bytes : ByteArray - get() { - val buffer = ByteArrayOutputStream(estimatedSize) - ByteStreams.copy(connection.inputStream, buffer) - return buffer.toByteArray() - } + fun toOutputStream(os: OutputStream) = ByteStreams.copy(connection.inputStream, os) + + fun toFile(file: File) = toOutputStream(FileOutputStream(file)) val string: String get() { diff --git a/src/main/kotlin/com/beust/kobalt/plugin/android/AndroidPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/android/AndroidPlugin.kt index 3da61d11..88d3d3f6 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/android/AndroidPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/android/AndroidPlugin.kt @@ -35,7 +35,7 @@ public class AndroidPlugin @Inject constructor() : BasePlugin() { override fun apply(project: Project, context: KobaltContext) { log(1, "Applying plug-in Android on project $project") - project.compileDependencies.add(FileDependency(androidJar.toString())) +// project.compileDependencies.add(FileDependency(androidJar.toString())) } fun dirGet(dir: Path, vararg others: String) : String { 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 c8afe240..393c0e1d 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt @@ -54,7 +54,8 @@ public class JavaPlugin @Inject constructor( javac!!.absolutePath, "-d", outputDirectory.absolutePath) if (cpList.size > 0) { - val stringClasspath = cpList.map { it.jarFile.get().absolutePath } + val fullClasspath = dependencyManager.transitiveClosure(cpList) + val stringClasspath = fullClasspath.map { it.jarFile.get().absolutePath } validateClasspath(stringClasspath) args.add("-classpath") args.add(stringClasspath.joinToString(File.pathSeparator))