From 908a596b6d2330e66cd3ae5dd4fe6318d7828f7f Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Mon, 15 Aug 2016 16:14:27 +0200 Subject: [PATCH] Take into account sbt.global.base and sbt.ivy.home properties --- .../src/main/scala-2.10/coursier/Tasks.scala | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/plugin/src/main/scala-2.10/coursier/Tasks.scala b/plugin/src/main/scala-2.10/coursier/Tasks.scala index b331f7de3..c27313efe 100644 --- a/plugin/src/main/scala-2.10/coursier/Tasks.scala +++ b/plugin/src/main/scala-2.10/coursier/Tasks.scala @@ -6,7 +6,7 @@ import java.nio.file.Files import java.util.concurrent.{ ExecutorService, Executors } import coursier.core.{ Authentication, Publication } -import coursier.ivy.IvyRepository +import coursier.ivy.{ IvyRepository, PropertiesPattern } import coursier.Keys._ import coursier.Structure._ import coursier.maven.WritePom @@ -258,6 +258,26 @@ object Tasks { private def createLogger() = new TermDisplay(new OutputStreamWriter(System.err)) + private lazy val globalPluginPattern = { + // FIXME get the 0.13 automatically? + val s = s"file:$${sbt.global.base-$${user.home}/.sbt/0.13}/plugins/target/resolution-cache/" + + "[organization]/[module](/scala_[scalaVersion])(/sbt_[sbtVersion])/[revision]/resolved.xml.[ext]" + + val p = PropertiesPattern.parse(s) match { + case -\/(err) => + throw new Exception(s"Cannot parse pattern $s: $err") + case \/-(p) => + p + } + + p.substituteProperties(sys.props.toMap) match { + case -\/(err) => + throw new Exception(err) + case \/-(p) => + p + } + } + def resolutionTask( sbtClassifiers: Boolean = false ) = Def.task { @@ -400,9 +420,8 @@ object Tasks { log.info(s" ${p.module}:${p.version}") } - val globalPluginsRepo = IvyRepository( - new File(sys.props("user.home") + "/.sbt/0.13/plugins/target/resolution-cache/").toURI.toString + - "[organization]/[module](/scala_[scalaVersion])(/sbt_[sbtVersion])/[revision]/resolved.xml.[ext]", + val globalPluginsRepo = IvyRepository.fromPattern( + globalPluginPattern, withChecksums = false, withSignatures = false, withArtifacts = false @@ -410,8 +429,19 @@ object Tasks { val interProjectRepo = InterProjectRepository(interProjectDependencies) + val ivyHome = sys.props.getOrElse( + "ivy.home", + new File(sys.props("user.home")).toURI.getPath + ".ivy2" + ) + + val sbtIvyHome = sys.props.getOrElse( + "sbt.ivy.home", + ivyHome + ) + val ivyProperties = Map( - "ivy.home" -> (new File(sys.props("user.home")).toURI.getPath + ".ivy2") + "ivy.home" -> ivyHome, + "sbt.ivy.home" -> sbtIvyHome ) ++ sys.props val useSbtCredentials = coursierUseSbtCredentials.value