Skip to content

Commit cb020fb

Browse files
committed
Change repository adding logic
Now if the repo being added already exists, it is moved to the end of the list, effectively lowering its priority. Original issue: Kotlin/kotlin-jupyter#107
1 parent 7062bf5 commit cb020fb

File tree

1 file changed

+22
-10
lines changed
  • libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/impl

1 file changed

+22
-10
lines changed

libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/impl/ivy.kt

+22-10
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,14 @@ import org.apache.ivy.core.settings.IvySettings
1616
import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorWriter
1717
import org.apache.ivy.plugins.resolver.ChainResolver
1818
import org.apache.ivy.plugins.resolver.IBiblioResolver
19-
import org.apache.ivy.plugins.resolver.URLResolver
2019
import org.apache.ivy.util.DefaultMessageLogger
2120
import org.apache.ivy.util.Message
2221
import java.io.File
2322
import kotlin.script.experimental.api.*
2423
import kotlin.script.experimental.dependencies.ExternalDependenciesResolver
2524
import kotlin.script.experimental.dependencies.RepositoryCoordinates
26-
import kotlin.script.experimental.dependencies.impl.toRepositoryUrlOrNull
2725
import kotlin.script.experimental.dependencies.impl.dependencyScopes
26+
import kotlin.script.experimental.dependencies.impl.toRepositoryUrlOrNull
2827
import kotlin.script.experimental.dependencies.impl.transitive
2928

3029
class IvyResolver : ExternalDependenciesResolver {
@@ -64,7 +63,7 @@ class IvyResolver : ExternalDependenciesResolver {
6463
}
6564
}
6665

67-
private val ivyResolvers = arrayListOf<URLResolver>()
66+
private val ivyResolvers = arrayListOf<IBiblioResolver>()
6867

6968
private fun resolveArtifact(
7069
groupId: String,
@@ -153,13 +152,26 @@ class IvyResolver : ExternalDependenciesResolver {
153152
val url = repositoryCoordinates.toRepositoryUrlOrNull()
154153
?: return false.asSuccess()
155154

156-
ivyResolvers.add(
157-
IBiblioResolver().apply {
158-
isM2compatible = true
159-
name = url.host
160-
root = url.toExternalForm()
161-
}
162-
)
155+
val root = url.toExternalForm()
156+
157+
// Check whether this repository was already added
158+
val prevRepoIndex = ivyResolvers.indexOfFirst { it.root == root }
159+
if (prevRepoIndex != -1) {
160+
// If yes, move it to the end of the list.
161+
// It will decrease its resolution priority
162+
val resolver = ivyResolvers[prevRepoIndex]
163+
ivyResolvers.removeAt(prevRepoIndex)
164+
ivyResolvers.add(resolver)
165+
} else {
166+
ivyResolvers.add(
167+
IBiblioResolver().apply {
168+
isM2compatible = true
169+
name = url.host
170+
this.root = root
171+
}
172+
)
173+
}
174+
163175
return true.asSuccess()
164176
}
165177

0 commit comments

Comments
 (0)