Skip to content

Commit 0b0f9a6

Browse files
authored
Merge pull request #48 from rolang/main
Prevent from failing using an extra protocol in resolver's URL
2 parents e1c26ae + f9bb1ed commit 0b0f9a6

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

modules/sbt-plugin-1_3_11/src/main/scala/org/scalasteward/sbt/plugin/StewardPlugin_1_3_11.scala

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@ object StewardPlugin_1_3_11 extends AutoPlugin {
5252
)
5353
val dependencies = libraryDeps ++ scalafixDeps
5454

55-
def getCredentials(url: URL, name: String): Option[Resolver.Credentials] =
55+
def getCredentials(host: String, name: String): Option[Resolver.Credentials] =
5656
(for {
5757
allDirect <- Try(Credentials.allDirect(sbtCredentials)).toOption
58-
maybeRealmAndHost = allDirect.find(c => c.realm == name && c.host == url.getHost)
58+
maybeRealmAndHost = allDirect.find(c => c.realm == name && c.host == host)
5959
maybeRealm = allDirect.find(_.realm == name)
60-
maybeHost = allDirect.find(_.host == url.getHost)
60+
maybeHost = allDirect.find(_.host == host)
6161
} yield maybeRealmAndHost.orElse(maybeRealm).orElse(maybeHost)).flatten
6262
.map(c => Resolver.Credentials(c.userName, c.passwd))
6363

@@ -69,13 +69,17 @@ object StewardPlugin_1_3_11 extends AutoPlugin {
6969
(headerKey, headerValue) <- authentication.headers
7070
} yield Resolver.Header(headerKey, headerValue)
7171

72+
// may include protocols other than http/https which may fail on constructing a java.net.URL
73+
def getHost(uri: String): Option[String] =
74+
Try(new URL(uri).getHost).orElse(Try(new URI(uri).getHost)).toOption
75+
7276
val resolvers = fullResolvers.value.collect {
7377
case repo: MavenRepository if !repo.root.startsWith("file:") =>
74-
val creds = getCredentials(new URL(repo.root), repo.name)
78+
val creds = getHost(repo.root).flatMap(getCredentials(_, repo.name))
7579
Resolver.MavenRepository(repo.name, repo.root, creds, getHeaders(repo.name))
7680
case repo: URLRepository =>
7781
val ivyPatterns = repo.patterns.ivyPatterns.mkString
78-
val creds = getCredentials(new URL(ivyPatterns), repo.name)
82+
val creds = getHost(ivyPatterns).flatMap(getCredentials(_, repo.name))
7983
Resolver.IvyRepository(repo.name, ivyPatterns, creds, getHeaders(repo.name))
8084
}
8185

0 commit comments

Comments
 (0)