mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-26 08:27:12 -07:00
Kurl.IFactory.
This commit is contained in:
parent
3ce5e8e40f
commit
4fa253cea2
4 changed files with 13 additions and 11 deletions
|
@ -42,20 +42,20 @@ class DownloadManager @Inject constructor(val factory: ArtifactFetcher.IFactory)
|
||||||
*/
|
*/
|
||||||
class ArtifactFetcher @Inject constructor(@Assisted("url") val url: String,
|
class ArtifactFetcher @Inject constructor(@Assisted("url") val url: String,
|
||||||
@Assisted("fileName") val fileName: String,
|
@Assisted("fileName") val fileName: String,
|
||||||
val files: KFiles, val http: Http) : Callable<File> {
|
val files: KFiles, val urlFactory: Kurl.IFactory) : Callable<File> {
|
||||||
interface IFactory {
|
interface IFactory {
|
||||||
fun create(@Assisted("url") url: String, @Assisted("fileName") fileName: String) : ArtifactFetcher
|
fun create(@Assisted("url") url: String, @Assisted("fileName") fileName: String) : ArtifactFetcher
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun call() : File {
|
override fun call() : File {
|
||||||
val k = Kurl(url + ".md5", http)
|
val k = urlFactory.create(url + ".md5")
|
||||||
val remoteMd5 =
|
val remoteMd5 =
|
||||||
if (k.exists) k.string.trim(' ', '\t', '\n').substring(0, 32)
|
if (k.exists) k.string.trim(' ', '\t', '\n').substring(0, 32)
|
||||||
else null
|
else null
|
||||||
|
|
||||||
val file = File(fileName)
|
val file = File(fileName)
|
||||||
file.parentFile.mkdirs()
|
file.parentFile.mkdirs()
|
||||||
Kurl(url, http).toFile(file)
|
urlFactory.create(url).toFile(file)
|
||||||
log(1, " Downloaded $url")
|
log(1, " Downloaded $url")
|
||||||
|
|
||||||
if (remoteMd5 != null && remoteMd5 != Md5.toMd5(file)) {
|
if (remoteMd5 != null && remoteMd5 != Md5.toMd5(file)) {
|
||||||
|
|
|
@ -10,11 +10,15 @@ import javax.inject.Inject
|
||||||
/**
|
/**
|
||||||
* Abstracts a URL so that it works transparently on either http:// or file://
|
* Abstracts a URL so that it works transparently on either http:// or file://
|
||||||
*/
|
*/
|
||||||
public class Kurl @Inject constructor(@Assisted val url: String, val http: Http) {
|
class Kurl @Inject constructor(@Assisted val url: String) {
|
||||||
val connection : URLConnection by lazy {
|
val connection : URLConnection by lazy {
|
||||||
URL(url).openConnection()
|
URL(url).openConnection()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface IFactory {
|
||||||
|
fun create(url: String) : Kurl
|
||||||
|
}
|
||||||
|
|
||||||
val exists : Boolean
|
val exists : Boolean
|
||||||
get() {
|
get() {
|
||||||
val result =
|
val result =
|
||||||
|
|
|
@ -21,7 +21,7 @@ import kotlin.dom.parseXml
|
||||||
* Find the repo that contains the given dependency among a list of repos. Searches are performed in parallel and
|
* Find the repo that contains the given dependency among a list of repos. Searches are performed in parallel and
|
||||||
* cached so we never make a network call for the same dependency more than once.
|
* cached so we never make a network call for the same dependency more than once.
|
||||||
*/
|
*/
|
||||||
public class RepoFinder @Inject constructor(val http: Http, val executors: KobaltExecutors) {
|
public class RepoFinder @Inject constructor(val urlFactory: Kurl.IFactory, val executors: KobaltExecutors) {
|
||||||
public fun findCorrectRepo(id: String): RepoResult {
|
public fun findCorrectRepo(id: String): RepoResult {
|
||||||
return FOUND_REPOS.get(id)
|
return FOUND_REPOS.get(id)
|
||||||
}
|
}
|
||||||
|
@ -97,12 +97,12 @@ public class RepoFinder @Inject constructor(val http: Http, val executors: Kobal
|
||||||
val dep = SimpleDep(groupId, artifactId, packaging, version)
|
val dep = SimpleDep(groupId, artifactId, packaging, version)
|
||||||
// Try to find the jar file
|
// Try to find the jar file
|
||||||
val urlJar = repoUrl + dep.toJarFile(dep.version)
|
val urlJar = repoUrl + dep.toJarFile(dep.version)
|
||||||
val hasJar = Kurl(urlJar, http).exists
|
val hasJar = urlFactory.create(urlJar).exists
|
||||||
val found =
|
val found =
|
||||||
if (! hasJar) {
|
if (! hasJar) {
|
||||||
// No jar, try to find the directory
|
// No jar, try to find the directory
|
||||||
val url = repoUrl + File(dep.toJarFile(dep.version)).parentFile.path
|
val url = repoUrl + File(dep.toJarFile(dep.version)).parentFile.path
|
||||||
http.get(url).code == 200
|
urlFactory.create(url).exists
|
||||||
} else {
|
} else {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,7 @@ package com.beust.kobalt.misc
|
||||||
|
|
||||||
import com.beust.kobalt.Args
|
import com.beust.kobalt.Args
|
||||||
import com.beust.kobalt.kotlin.BuildFileCompiler
|
import com.beust.kobalt.kotlin.BuildFileCompiler
|
||||||
import com.beust.kobalt.maven.ArtifactFetcher
|
import com.beust.kobalt.maven.*
|
||||||
import com.beust.kobalt.maven.LocalRepo
|
|
||||||
import com.beust.kobalt.maven.Pom
|
|
||||||
import com.beust.kobalt.maven.PomGenerator
|
|
||||||
import com.beust.kobalt.plugin.publish.JCenterApi
|
import com.beust.kobalt.plugin.publish.JCenterApi
|
||||||
import com.google.inject.AbstractModule
|
import com.google.inject.AbstractModule
|
||||||
import com.google.inject.BindingAnnotation
|
import com.google.inject.BindingAnnotation
|
||||||
|
@ -41,6 +38,7 @@ public open class MainModule(val args: Args) : AbstractModule() {
|
||||||
JCenterApi.IFactory::class.java,
|
JCenterApi.IFactory::class.java,
|
||||||
Pom.IFactory::class.java,
|
Pom.IFactory::class.java,
|
||||||
BuildFileCompiler.IFactory::class.java,
|
BuildFileCompiler.IFactory::class.java,
|
||||||
|
Kurl.IFactory::class.java,
|
||||||
ArtifactFetcher.IFactory::class.java)
|
ArtifactFetcher.IFactory::class.java)
|
||||||
.forEach {
|
.forEach {
|
||||||
install(builder.build(it))
|
install(builder.build(it))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue