diff --git a/.gitignore b/.gitignore index 2f7896d1d..477eea9ea 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,8 @@ target/ + +# Metals / bloop +.metals/ +.bloop/ + +# Intellij +.idea/ diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/CoursierConfiguration.scala b/modules/lm-coursier/src/main/scala/lmcoursier/CoursierConfiguration.scala index acfd65b8c..45ea1b886 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/CoursierConfiguration.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/CoursierConfiguration.scala @@ -75,6 +75,8 @@ import scala.concurrent.duration.Duration withStrict(Some(strict)) def withTtl(ttl: Duration): CoursierConfiguration = withTtl(Some(ttl)) + def addRepositoryAuthentication(repositoryId: String, authentication: Authentication): CoursierConfiguration = + withAuthenticationByRepositoryId(authenticationByRepositoryId :+ (repositoryId, authentication)) } object CoursierConfiguration { diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/Authentication.scala b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/Authentication.scala index 264b1ff5f..5d65e1763 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/Authentication.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/Authentication.scala @@ -1,15 +1,30 @@ package lmcoursier.definitions -import dataclass.data +import dataclass._ @data class Authentication( user: String, password: String, optional: Boolean = false, - realmOpt: Option[String] = None + realmOpt: Option[String] = None, + @since + headers: Seq[(String,String)] = Nil, + httpsOnly: Boolean = true, + passOnRedirect: Boolean = false ) { override def toString(): String = withPassword("****") + .withHeaders( + headers.map { + case (k, v) => (k, "****") + } + ) .productIterator .mkString("Authentication(", ", ", ")") } + +object Authentication { + + def apply(headers: Seq[(String, String)]): Authentication = + Authentication("", "").withHeaders(headers) +} diff --git a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ToCoursier.scala b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ToCoursier.scala index 23a2222ab..dd7da1344 100644 --- a/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ToCoursier.scala +++ b/modules/lm-coursier/src/main/scala/lmcoursier/definitions/ToCoursier.scala @@ -27,6 +27,9 @@ object ToCoursier { coursier.core.Authentication(authentication.user, authentication.password) .withOptional(authentication.optional) .withRealmOpt(authentication.realmOpt) + .withHttpHeaders(authentication.headers) + .withHttpsOnly(authentication.httpsOnly) + .withPassOnRedirect(authentication.passOnRedirect) def module(module: Module): coursier.core.Module = coursier.core.Module(