From 4aed6f6c38215afa93ba664031a9ff2479165bd3 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Wed, 30 Dec 2015 01:34:38 +0100 Subject: [PATCH] global-plugins - attempt #2 - success --- .../scala/coursier/ivy/IvyRepository.scala | 29 ++++++++---- .../main/scala/coursier/CoursierPlugin.scala | 47 +++++-------------- 2 files changed, 34 insertions(+), 42 deletions(-) diff --git a/core/shared/src/main/scala/coursier/ivy/IvyRepository.scala b/core/shared/src/main/scala/coursier/ivy/IvyRepository.scala index 9a4e0c3fc..2fe8a20b9 100644 --- a/core/shared/src/main/scala/coursier/ivy/IvyRepository.scala +++ b/core/shared/src/main/scala/coursier/ivy/IvyRepository.scala @@ -80,7 +80,9 @@ object IvyRepository { case class IvyRepository( pattern: String, changing: Option[Boolean] = None, - properties: Map[String, String] = Map.empty + properties: Map[String, String] = Map.empty, + withChecksums: Boolean = true, + withSignatures: Boolean = true ) extends Repository { import Repository._ @@ -199,15 +201,20 @@ case class IvyRepository( } retainedWithUrl.map { case (p, url) => - Artifact( + var artifact = Artifact( url, Map.empty, Map.empty, p.attributes, changing = changing.getOrElse(project.version.contains("-SNAPSHOT")) // could be more reliable ) - .withDefaultChecksums - .withDefaultSignature + + if (withChecksums) + artifact = artifact.withDefaultChecksums + if (withSignatures) + artifact = artifact.withDefaultSignature + + artifact } } } @@ -226,16 +233,22 @@ case class IvyRepository( url <- substitute( variables(module, version, "ivy", "ivy", "xml") ) - } yield - Artifact( + } yield { + var artifact = Artifact( url, Map.empty, Map.empty, Attributes("ivy", ""), changing = changing.getOrElse(version.contains("-SNAPSHOT")) ) - .withDefaultChecksums - .withDefaultSignature + + if (withChecksums) + artifact = artifact.withDefaultChecksums + if (withSignatures) + artifact = artifact.withDefaultSignature + + artifact + } for { artifact <- EitherT(F.point(eitherArtifact)) diff --git a/plugin/src/main/scala/coursier/CoursierPlugin.scala b/plugin/src/main/scala/coursier/CoursierPlugin.scala index 9ee64f198..c6b2109c6 100644 --- a/plugin/src/main/scala/coursier/CoursierPlugin.scala +++ b/plugin/src/main/scala/coursier/CoursierPlugin.scala @@ -3,6 +3,7 @@ package coursier import java.io.{ File, OutputStreamWriter } import coursier.cli.TermDisplay +import coursier.ivy.IvyRepository import sbt.{ MavenRepository => _, _ } import sbt.Keys._ @@ -17,33 +18,6 @@ object CoursierPlugin extends AutoPlugin { private def errPrintln(s: String): Unit = scala.Console.err.println(s) - // org.scala-sbt:global-plugins;sbtVersion=0.13;scalaVersion=2.10:0.0 - private val globalPluginsProject = Project( - Module("org.scala-sbt", "global-plugins", Map("sbtVersion" -> "0.13", "scalaVersion" -> "2.10")), - "0.0", - Nil, - Map.empty, - None, - Nil, - Map.empty, - Nil, - None, - None, - Nil - ) - - private val globalPluginsArtifacts = Seq( - "" -> Seq( - Artifact( - new File(sys.props("user.home") + "/.sbt/0.13/plugins/target") .toURI.toString, - Map.empty, - Map.empty, - Attributes(), - changing = true - ) - ) - ) - object autoImport { val coursierParallelDownloads = Keys.coursierParallelDownloads val coursierMaxIterations = Keys.coursierMaxIterations @@ -91,22 +65,27 @@ object CoursierPlugin extends AutoPlugin { val verbosity = coursierVerbosity.value - val projects0 = projects :+ (globalPluginsProject -> globalPluginsArtifacts) - val startRes = Resolution( currentProject.dependencies.map { case (_, dep) => dep }.toSet, filter = Some(dep => !dep.optional), - forceVersions = projects0.map { case (proj, _) => proj.moduleVersion }.toMap + forceVersions = projects.map { case (proj, _) => proj.moduleVersion }.toMap ) if (verbosity >= 1) { println("InterProjectRepository") - for ((p, _) <- projects0) + for ((p, _) <- projects) println(s" ${p.module}:${p.version}") } - val interProjectRepo = InterProjectRepository(projects0) - val repositories = interProjectRepo +: resolvers.flatMap(FromSbt.repository(_, ivyProperties)) + 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]", + withChecksums = false, + withSignatures = false + ) + + val interProjectRepo = InterProjectRepository(projects) + val repositories = Seq(globalPluginsRepo, interProjectRepo) ++ resolvers.flatMap(FromSbt.repository(_, ivyProperties)) val files = Files( Seq("http://" -> new File(cacheDir, "http"), "https://" -> new File(cacheDir, "https")), @@ -299,7 +278,7 @@ object CoursierPlugin extends AutoPlugin { override lazy val projectSettings = Seq( coursierParallelDownloads := 6, coursierMaxIterations := 50, - coursierChecksums := Seq(Some("SHA-1"), Some("MD5")), + coursierChecksums := Seq(Some("SHA-1"), Some("MD5"), None), coursierCachePolicy := CachePolicy.FetchMissing, coursierVerbosity := 1, coursierResolvers <<= Tasks.coursierResolversTask,