diff --git a/core/shared/src/main/scala/coursier/ivy/IvyXml.scala b/core/shared/src/main/scala/coursier/ivy/IvyXml.scala index dcc1a0a6f..5f15e255d 100644 --- a/core/shared/src/main/scala/coursier/ivy/IvyXml.scala +++ b/core/shared/src/main/scala/coursier/ivy/IvyXml.scala @@ -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), diff --git a/plugin/src/main/scala/coursier/FromSbt.scala b/plugin/src/main/scala/coursier/FromSbt.scala index 0bbc0349b..2a1b653b1 100644 --- a/plugin/src/main/scala/coursier/FromSbt.scala +++ b/plugin/src/main/scala/coursier/FromSbt.scala @@ -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)