From d17a2ca03ffd477bc670648dbb498ab68148a7b0 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Wed, 21 Nov 2018 15:29:50 +0100 Subject: [PATCH] Make an updateClassifiers-related scripted test pass MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit That was painful… Update depending on how https://github.com/sbt/sbt/pull/4459 goes --- .../sbtcoursiershared/SbtCoursierShared.scala | 43 ++++++++++++++++-- .../coursier/sbtcoursier/CoursierPlugin.scala | 41 +---------------- .../build.sbt | 0 .../project/plugins.sbt | 0 .../publish-local-sources-javadoc-conf/test | 0 .../sbtlmcoursier/LmCoursierPlugin.scala | 45 +++++++++++++++++++ 6 files changed, 86 insertions(+), 43 deletions(-) rename modules/sbt-coursier/src/sbt-test/{sbt-coursier-group-2 => shared-2}/publish-local-sources-javadoc-conf/build.sbt (100%) rename modules/sbt-coursier/src/sbt-test/{sbt-coursier-group-2 => shared-2}/publish-local-sources-javadoc-conf/project/plugins.sbt (100%) rename modules/sbt-coursier/src/sbt-test/{sbt-coursier-group-2 => shared-2}/publish-local-sources-javadoc-conf/test (100%) diff --git a/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/SbtCoursierShared.scala b/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/SbtCoursierShared.scala index edf30a28a..5f00bbe09 100644 --- a/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/SbtCoursierShared.scala +++ b/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/SbtCoursierShared.scala @@ -1,8 +1,6 @@ package coursier.sbtcoursiershared -import java.net.URL - -import coursier.core.{Configuration, Module, Project, Publication} +import coursier.core.{Configuration, Project, Publication} import coursier.lmcoursier.{FallbackDependency, SbtCoursierCache} import sbt.{AutoPlugin, Classpaths, Compile, Setting, TaskKey, Test, settingKey, taskKey} import sbt.Keys._ @@ -100,6 +98,45 @@ object SbtCoursierShared extends AutoPlugin { } }, coursierFallbackDependencies := InputsTasks.coursierFallbackDependenciesTask.value, + ivyConfigurations := { + val confs = ivyConfigurations.value + val names = confs.map(_.name).toSet + + // Yes, adding those back in sbt 1.0. Can't distinguish between config test (whose jars with classifier tests ought to + // be added), and sources / docs else (if their JARs are in compile, they would get added too then). + + val extraSources = + if (names("sources")) + None + else + Some( + sbt.Configuration.of( + id = "Sources", + name = "sources", + description = "", + isPublic = true, + extendsConfigs = Vector.empty, + transitive = false + ) + ) + + val extraDocs = + if (names("docs")) + None + else + Some( + sbt.Configuration.of( + id = "Docs", + name = "docs", + description = "", + isPublic = true, + extendsConfigs = Vector.empty, + transitive = false + ) + ) + + confs ++ extraSources.toSeq ++ extraDocs.toSeq + } ) ++ { if (pubSettings) IvyXml.generateIvyXmlSettings() diff --git a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/CoursierPlugin.scala b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/CoursierPlugin.scala index cdb304d6f..a33dac17e 100644 --- a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/CoursierPlugin.scala +++ b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/CoursierPlugin.scala @@ -184,46 +184,7 @@ object CoursierPlugin extends AutoPlugin { }, coursierSbtClassifiersResolution := ResolutionTasks.resolutionsTask( sbtClassifiers = true - ).value.head._2, - ivyConfigurations := { - val confs = ivyConfigurations.value - val names = confs.map(_.name).toSet - - // Yes, adding those back in sbt 1.0. Can't distinguish between config test (whose jars with classifier tests ought to - // be added), and sources / docs else (if their JARs are in compile, they would get added too then). - - val extraSources = - if (names("sources")) - None - else - Some( - sbt.Configuration.of( - id = "Sources", - name = "sources", - description = "", - isPublic = true, - extendsConfigs = Vector.empty, - transitive = false - ) - ) - - val extraDocs = - if (names("docs")) - None - else - Some( - sbt.Configuration.of( - id = "Docs", - name = "docs", - description = "", - isPublic = true, - extendsConfigs = Vector.empty, - transitive = false - ) - ) - - confs ++ extraSources.toSeq ++ extraDocs.toSeq - } + ).value.head._2 ) override lazy val buildSettings = super.buildSettings ++ Seq( diff --git a/modules/sbt-coursier/src/sbt-test/sbt-coursier-group-2/publish-local-sources-javadoc-conf/build.sbt b/modules/sbt-coursier/src/sbt-test/shared-2/publish-local-sources-javadoc-conf/build.sbt similarity index 100% rename from modules/sbt-coursier/src/sbt-test/sbt-coursier-group-2/publish-local-sources-javadoc-conf/build.sbt rename to modules/sbt-coursier/src/sbt-test/shared-2/publish-local-sources-javadoc-conf/build.sbt diff --git a/modules/sbt-coursier/src/sbt-test/sbt-coursier-group-2/publish-local-sources-javadoc-conf/project/plugins.sbt b/modules/sbt-coursier/src/sbt-test/shared-2/publish-local-sources-javadoc-conf/project/plugins.sbt similarity index 100% rename from modules/sbt-coursier/src/sbt-test/sbt-coursier-group-2/publish-local-sources-javadoc-conf/project/plugins.sbt rename to modules/sbt-coursier/src/sbt-test/shared-2/publish-local-sources-javadoc-conf/project/plugins.sbt diff --git a/modules/sbt-coursier/src/sbt-test/sbt-coursier-group-2/publish-local-sources-javadoc-conf/test b/modules/sbt-coursier/src/sbt-test/shared-2/publish-local-sources-javadoc-conf/test similarity index 100% rename from modules/sbt-coursier/src/sbt-test/sbt-coursier-group-2/publish-local-sources-javadoc-conf/test rename to modules/sbt-coursier/src/sbt-test/shared-2/publish-local-sources-javadoc-conf/test diff --git a/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala b/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala index f6f600b9a..32c79adf6 100644 --- a/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala +++ b/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala @@ -24,8 +24,53 @@ object LmCoursierPlugin extends AutoPlugin { // so that it doesn't override us :| override def requires = SbtCoursierShared + private val temporarySettings = { + + import sbt._ + import sbt.Classpaths.withExcludes + import sbt.Defaults.lock + import sbt.Keys._ + import sbt.librarymanagement.GetClassifiersConfiguration + + Seq( + // cut-n-pasted from sbt 1.0.2 + // only the "val lm = …" line was changed + updateClassifiers := (Def.task { + val s = streams.value + val is = ivySbt.value + val lm = dependencyResolution.value + val mod = (classifiersModule in updateClassifiers).value + val c = updateConfiguration.value + val app = appConfiguration.value + val srcTypes = sourceArtifactTypes.value + val docTypes = docArtifactTypes.value + val out = is.withIvy(s.log)(_.getSettings.getDefaultIvyUserDir) + val uwConfig = (unresolvedWarningConfiguration in update).value + withExcludes(out, mod.classifiers, lock(app)) { excludes => + lm.updateClassifiers( + GetClassifiersConfiguration( + mod, + excludes.toVector, + c.withArtifactFilter(c.artifactFilter.map(af => af.withInverted(!af.inverted))), + // scalaModule, + srcTypes.toVector, + docTypes.toVector + ), + uwConfig, + Vector.empty, + s.log + ) match { + case Left(_) => ??? + case Right(ur) => ur + } + } + } tag (Tags.Update, Tags.Network)).value + ) + } + // putting this in projectSettings like sbt.plugins.IvyPlugin does :| override def projectSettings: Seq[Setting[_]] = + temporarySettings ++ Seq( dependencyResolution := mkDependencyResolution.value, coursierConfiguration := mkCoursierConfiguration().value