mixing urls and jars in bootstrap (#742)

This commit is contained in:
Bohdan Yavorskyi 2018-01-21 22:55:46 +02:00 committed by Alexandre Archambault
parent 70fa5f13cb
commit 2d5f7c3eb4
2 changed files with 22 additions and 27 deletions

View File

@ -119,32 +119,20 @@ final case class Bootstrap(
}
val (urls, files) =
if (options.standalone)
(
Seq.empty[String],
helper.fetch(
sources = false,
javadoc = false,
artifactTypes = artifactOptions.artifactTypes(sources = false, javadoc = false)
)
)
else
(
helper.artifacts(
sources = false,
javadoc = false,
artifactTypes = artifactOptions.artifactTypes(sources = false, javadoc = false)
).map(_.url),
Seq.empty[File]
)
helper.fetchMap(
sources = false,
javadoc = false,
artifactTypes = artifactOptions.artifactTypes(sources = false, javadoc = false)
).toList.foldLeft((List.empty[String], List.empty[File])){
case ((urls, files), (url, file)) =>
if (options.standalone) (urls, file :: files)
else if (url.startsWith("file:/")) (urls, file :: files)
else (url :: urls, files)
}
val isolatedUrls = isolatedArtifactFiles.map { case (k, (v, _)) => k -> v }
val isolatedFiles = isolatedArtifactFiles.map { case (k, (_, v)) => k -> v }
val nonHttpUrls = urls.filter(s => !s.startsWith("http://") && !s.startsWith("https://"))
if (nonHttpUrls.nonEmpty)
Console.err.println(s"Warning: non HTTP URLs:\n${nonHttpUrls.mkString("\n")}")
val buffer = new ByteArrayOutputStream
val bootstrapZip = new ZipInputStream(new ByteArrayInputStream(bootstrapJar))

View File

@ -657,12 +657,12 @@ class Helper(
}
}
def fetch(
def fetchMap(
sources: Boolean,
javadoc: Boolean,
artifactTypes: Set[String],
subset: Set[Dependency] = null
): Seq[File] = {
): Map[String, File] = {
val artifacts0 = artifacts(sources, javadoc, artifactTypes, subset).map { artifact =>
artifact.copy(attributes = Attributes())
@ -721,8 +721,6 @@ class Helper(
(artifact.url, f)
}.toMap
val files0 = artifactToFile.values.toSeq
logger.foreach(_.stop())
if (verbosityLevel >= 2)
@ -777,7 +775,16 @@ class Helper(
pw.write(jsonStr)
pw.close()
}
files0
artifactToFile
}
def fetch(
sources: Boolean,
javadoc: Boolean,
artifactTypes: Set[String],
subset: Set[Dependency] = null
): Seq[File] = {
fetchMap(sources,javadoc,artifactTypes,subset).values.toSeq
}
def contextLoader = Thread.currentThread().getContextClassLoader