From 09a29c26d062f81a7252951bd28fccff3df68a8a Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Wed, 9 Aug 2017 13:05:21 +0200 Subject: [PATCH] Quick fix adding the sbt plugin repo when necessary Non reg idocker-based ntegration test for that would be fine (but the CI of coursier is already cluttured enough) See the added TODO for some context --- .../main/scala/coursier/CoursierPlugin.scala | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/sbt-coursier/src/main/scala/coursier/CoursierPlugin.scala b/sbt-coursier/src/main/scala/coursier/CoursierPlugin.scala index 335059163..b95c16f07 100644 --- a/sbt-coursier/src/main/scala/coursier/CoursierPlugin.scala +++ b/sbt-coursier/src/main/scala/coursier/CoursierPlugin.scala @@ -77,13 +77,35 @@ object CoursierPlugin extends AutoPlugin { IvyXml.writeFiles(currentProject, shadedConfigOpt, ivySbt.value, streams.value.log) }).value + private val pluginIvySnapshotsBase = Resolver.SbtPluginRepositoryRoot.stripSuffix("/") + "/ivy-snapshots" + def coursierSettings( shadedConfigOpt: Option[(String, String)], packageConfigs: Seq[(Configuration, String)] ) = Seq( coursierResolvers := Tasks.coursierResolversTask.value, coursierRecursiveResolvers := Tasks.coursierRecursiveResolversTask.value, - coursierSbtResolvers := externalResolvers.in(updateSbtClassifiers).value, + coursierSbtResolvers := { + + // TODO Add docker-based integration test for that, see https://github.com/coursier/coursier/issues/632 + + val resolvers = externalResolvers.in(updateSbtClassifiers).value + + val pluginIvySnapshotsFound = resolvers.exists { + case repo: URLRepository => + repo + .patterns + .artifactPatterns + .headOption + .exists(_.startsWith(pluginIvySnapshotsBase)) + case _ => false + } + + if (pluginIvySnapshotsFound && !resolvers.contains(Classpaths.sbtPluginReleases)) + resolvers :+ Classpaths.sbtPluginReleases + else + resolvers + }, coursierFallbackDependencies := Tasks.coursierFallbackDependenciesTask.value, coursierArtifacts := Tasks.artifactFilesOrErrors(withClassifiers = false).value, coursierSignedArtifacts := Tasks.artifactFilesOrErrors(withClassifiers = false, includeSignatures = true).value,