Fix parsing of dependencies config mapping of Ivy files

This commit is contained in:
Alexandre Archambault 2015-12-30 01:34:47 +01:00
parent 2e6e061fe1
commit 357c3fa0f7
2 changed files with 17 additions and 18 deletions

View File

@ -28,6 +28,20 @@ object IvyXml {
name -> node.attribute("extends").toOption.toSeq.flatMap(_.split(','))
}
// FIXME "default(compile)" likely not to be always the default
def mappings(mapping: String): Seq[(String, String)] =
mapping.split(';').flatMap { m =>
val (froms, tos) = m.split("->", 2) match {
case Array(from) => (from, "default(compile)")
case Array(from, to) => (from, to)
}
for {
from <- froms.split(',')
to <- tos.split(',')
} yield (from.trim, to.trim)
}
// FIXME Errors ignored as above - warnings should be reported at least for anything suspicious
private def dependencies(node: Node): Seq[(String, Dependency)] =
node.children
@ -53,9 +67,7 @@ object IvyXml {
name <- node.attribute("name").toOption.toSeq
version <- node.attribute("rev").toOption.toSeq
rawConf <- node.attribute("conf").toOption.toSeq
(fromConf, toConf) <- rawConf.split(',').toSeq.map(_.split("->", 2)).collect {
case Array(from, to) => from -> to
}
(fromConf, toConf) <- mappings(rawConf)
attr = node.attributesFromNamespace(attributesNamespace)
} yield fromConf -> Dependency(
Module(org, name, attr.toMap),

View File

@ -1,6 +1,6 @@
package coursier
import coursier.ivy.IvyRepository
import coursier.ivy.{ IvyXml, IvyRepository }
import sbt.mavenint.SbtPomExtraProperties
import sbt.{ Resolver, CrossVersion, ModuleID }
@ -24,19 +24,6 @@ object FromSbt {
case f: CrossVersion.Binary => name + "_" + f.remapVersion(scalaBinaryVersion)
}
def mappings(mapping: String): Seq[(String, String)] =
mapping.split(';').flatMap { m =>
val (froms, tos) = m.split("->", 2) match {
case Array(from) => (from, "default(compile)")
case Array(from, to) => (from, to)
}
for {
from <- froms.split(',')
to <- tos.split(',')
} yield (from.trim, to.trim)
}
def attributes(attr: Map[String, String]): Map[String, String] =
attr.map { case (k, v) =>
k.stripPrefix("e:") -> v
@ -64,7 +51,7 @@ object FromSbt {
)
val mapping = module.configurations.getOrElse("compile")
val allMappings = mappings(mapping)
val allMappings = IvyXml.mappings(mapping)
val attributes =
if (module.explicitArtifacts.isEmpty)