From 5ffc6bc0f3f2b6929486a42e587fe963c19ebf7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillaume=20Mass=C3=A9?= Date: Tue, 9 Mar 2021 00:54:47 -0500 Subject: [PATCH] Add support for custom protocol with coursier --- main/src/main/scala/sbt/Defaults.scala | 1 + main/src/main/scala/sbt/Keys.scala | 1 + .../scala/sbt/coursierint/LMCoursier.scala | 22 +++++++++++++------ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 4b0fc2ad98..8a380ffbf2 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -271,6 +271,7 @@ object Defaults extends BuildCommon { csrLogger := LMCoursier.coursierLoggerTask.value, csrMavenProfiles :== Set.empty, csrReconciliations :== LMCoursier.relaxedForAllModules, + csrProtocolHandlerDependencies :== Nil, ) /** Core non-plugin settings for sbt builds. These *must* be on every build or the sbt engine will fail to run at all. */ diff --git a/main/src/main/scala/sbt/Keys.scala b/main/src/main/scala/sbt/Keys.scala index 3928122711..d5a577c803 100644 --- a/main/src/main/scala/sbt/Keys.scala +++ b/main/src/main/scala/sbt/Keys.scala @@ -445,6 +445,7 @@ object Keys { val csrExtraCredentials = taskKey[Seq[lmcoursier.credentials.Credentials]]("") val csrPublications = taskKey[Seq[(lmcoursier.definitions.Configuration, lmcoursier.definitions.Publication)]]("") val csrReconciliations = settingKey[Seq[(ModuleMatchers, Reconciliation)]]("Strategy to reconcile version conflicts.") + val csrProtocolHandlerDependencies = settingKey[Seq[ModuleID]]("Dependency to fetch to be able to load custom protocols.") val internalConfigurationMap = settingKey[Configuration => Configuration]("Maps configurations to the actual configuration used to define the classpath.").withRank(CSetting) val classpathConfiguration = taskKey[Configuration]("The configuration used to define the classpath.").withRank(CTask) diff --git a/main/src/main/scala/sbt/coursierint/LMCoursier.scala b/main/src/main/scala/sbt/coursierint/LMCoursier.scala index 36d7cf5241..00886da1a4 100644 --- a/main/src/main/scala/sbt/coursierint/LMCoursier.scala +++ b/main/src/main/scala/sbt/coursierint/LMCoursier.scala @@ -93,7 +93,8 @@ object LMCoursier { ivyHome: Option[File], strict: Option[CStrict], depsOverrides: Seq[ModuleID], - log: Logger + log: Logger, + protocolHandlerDependencies: Seq[ModuleID] ): CoursierConfiguration = coursierConfiguration( rs, @@ -117,7 +118,8 @@ object LMCoursier { strict, depsOverrides, None, - log + log, + protocolHandlerDependencies ) def coursierConfiguration( @@ -142,7 +144,8 @@ object LMCoursier { strict: Option[CStrict], depsOverrides: Seq[ModuleID], updateConfig: Option[UpdateConfiguration], - log: Logger + log: Logger, + protocolHandlerDependencies: Seq[ModuleID], ): CoursierConfiguration = { val coursierExcludeDeps = Inputs .exclusions( @@ -195,6 +198,7 @@ object LMCoursier { .withStrict(strict) .withForceVersions(userForceVersions.toVector) .withMissingOk(missingOk) + .withProtocolHandlerDependencies(protocolHandlerDependencies) } def coursierConfigurationTask: Def.Initialize[Task[CoursierConfiguration]] = Def.task { @@ -221,7 +225,8 @@ object LMCoursier { CoursierInputsTasks.strictTask.value, dependencyOverrides.value, Some(updateConfiguration.value), - streams.value.log + streams.value.log, + csrProtocolHandlerDependencies.value, ) } @@ -249,7 +254,8 @@ object LMCoursier { CoursierInputsTasks.strictTask.value, dependencyOverrides.value, Some(updateConfiguration.value), - streams.value.log + streams.value.log, + csrProtocolHandlerDependencies.value ) } @@ -277,7 +283,8 @@ object LMCoursier { CoursierInputsTasks.strictTask.value, dependencyOverrides.value, Some(updateConfiguration.value), - streams.value.log + streams.value.log, + csrProtocolHandlerDependencies.value, ) } @@ -305,7 +312,8 @@ object LMCoursier { CoursierInputsTasks.strictTask.value, dependencyOverrides.value, Some(updateConfiguration.value), - streams.value.log + streams.value.log, + csrProtocolHandlerDependencies.value, ) }