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: https://github.com/Kotlin/kotlin-jupyter/issues/107
This commit is contained in:
@@ -16,15 +16,14 @@ import org.apache.ivy.core.settings.IvySettings
|
|||||||
import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorWriter
|
import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorWriter
|
||||||
import org.apache.ivy.plugins.resolver.ChainResolver
|
import org.apache.ivy.plugins.resolver.ChainResolver
|
||||||
import org.apache.ivy.plugins.resolver.IBiblioResolver
|
import org.apache.ivy.plugins.resolver.IBiblioResolver
|
||||||
import org.apache.ivy.plugins.resolver.URLResolver
|
|
||||||
import org.apache.ivy.util.DefaultMessageLogger
|
import org.apache.ivy.util.DefaultMessageLogger
|
||||||
import org.apache.ivy.util.Message
|
import org.apache.ivy.util.Message
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.script.experimental.api.*
|
import kotlin.script.experimental.api.*
|
||||||
import kotlin.script.experimental.dependencies.ExternalDependenciesResolver
|
import kotlin.script.experimental.dependencies.ExternalDependenciesResolver
|
||||||
import kotlin.script.experimental.dependencies.RepositoryCoordinates
|
import kotlin.script.experimental.dependencies.RepositoryCoordinates
|
||||||
import kotlin.script.experimental.dependencies.impl.toRepositoryUrlOrNull
|
|
||||||
import kotlin.script.experimental.dependencies.impl.dependencyScopes
|
import kotlin.script.experimental.dependencies.impl.dependencyScopes
|
||||||
|
import kotlin.script.experimental.dependencies.impl.toRepositoryUrlOrNull
|
||||||
import kotlin.script.experimental.dependencies.impl.transitive
|
import kotlin.script.experimental.dependencies.impl.transitive
|
||||||
|
|
||||||
class IvyResolver : ExternalDependenciesResolver {
|
class IvyResolver : ExternalDependenciesResolver {
|
||||||
@@ -64,7 +63,7 @@ class IvyResolver : ExternalDependenciesResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val ivyResolvers = arrayListOf<URLResolver>()
|
private val ivyResolvers = arrayListOf<IBiblioResolver>()
|
||||||
|
|
||||||
private fun resolveArtifact(
|
private fun resolveArtifact(
|
||||||
groupId: String,
|
groupId: String,
|
||||||
@@ -153,13 +152,26 @@ class IvyResolver : ExternalDependenciesResolver {
|
|||||||
val url = repositoryCoordinates.toRepositoryUrlOrNull()
|
val url = repositoryCoordinates.toRepositoryUrlOrNull()
|
||||||
?: return false.asSuccess()
|
?: return false.asSuccess()
|
||||||
|
|
||||||
ivyResolvers.add(
|
val root = url.toExternalForm()
|
||||||
IBiblioResolver().apply {
|
|
||||||
isM2compatible = true
|
// Check whether this repository was already added
|
||||||
name = url.host
|
val prevRepoIndex = ivyResolvers.indexOfFirst { it.root == root }
|
||||||
root = url.toExternalForm()
|
if (prevRepoIndex != -1) {
|
||||||
}
|
// If yes, move it to the end of the list.
|
||||||
)
|
// It will decrease its resolution priority
|
||||||
|
val resolver = ivyResolvers[prevRepoIndex]
|
||||||
|
ivyResolvers.removeAt(prevRepoIndex)
|
||||||
|
ivyResolvers.add(resolver)
|
||||||
|
} else {
|
||||||
|
ivyResolvers.add(
|
||||||
|
IBiblioResolver().apply {
|
||||||
|
isM2compatible = true
|
||||||
|
name = url.host
|
||||||
|
this.root = root
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
return true.asSuccess()
|
return true.asSuccess()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user