[Gradle] Replace IdeaKotlinProjectArtifactDependency.Resolver by resolved function
^KT-55112 Verification Pending
This commit is contained in:
committed by
Space Team
parent
4c270c7f6e
commit
2f5dc93ba7
+2
-3
@@ -5,13 +5,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.idea.tcs
|
package org.jetbrains.kotlin.gradle.idea.tcs
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tooling.core.MutableExtras
|
import org.jetbrains.kotlin.tooling.core.HasMutableExtras
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
@IdeaKotlinModel
|
@IdeaKotlinModel
|
||||||
sealed interface IdeaKotlinDependency : Serializable {
|
sealed interface IdeaKotlinDependency : Serializable, HasMutableExtras {
|
||||||
val coordinates: IdeaKotlinDependencyCoordinates?
|
val coordinates: IdeaKotlinDependencyCoordinates?
|
||||||
val extras: MutableExtras
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val CLASSPATH_BINARY_TYPE = "org.jetbrains.kotlin.gradle.idea.tcs.IdeDependency.classpathBinaryType"
|
const val CLASSPATH_BINARY_TYPE = "org.jetbrains.kotlin.gradle.idea.tcs.IdeDependency.classpathBinaryType"
|
||||||
|
|||||||
+19
-44
@@ -3,10 +3,11 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@file:Suppress("UnusedReceiverParameter")
|
||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.idea.tcs
|
package org.jetbrains.kotlin.gradle.idea.tcs
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tooling.core.MutableExtras
|
import org.jetbrains.kotlin.tooling.core.*
|
||||||
import org.jetbrains.kotlin.tooling.core.mutableExtrasOf
|
|
||||||
|
|
||||||
data class IdeaKotlinProjectArtifactDependency(
|
data class IdeaKotlinProjectArtifactDependency(
|
||||||
val type: IdeaKotlinSourceDependency.Type,
|
val type: IdeaKotlinSourceDependency.Type,
|
||||||
@@ -14,52 +15,26 @@ data class IdeaKotlinProjectArtifactDependency(
|
|||||||
override val extras: MutableExtras = mutableExtrasOf()
|
override val extras: MutableExtras = mutableExtrasOf()
|
||||||
) : IdeaKotlinDependency {
|
) : IdeaKotlinDependency {
|
||||||
|
|
||||||
@IdeaKotlinService
|
fun resolved(sourceSetNames: Iterable<String>): Set<IdeaKotlinSourceDependency> {
|
||||||
fun interface Resolver {
|
return sourceSetNames.toSet()
|
||||||
fun resolve(dependency: IdeaKotlinProjectArtifactDependency): IdeaKotlinSourceDependency?
|
.map { sourceSetName ->
|
||||||
|
IdeaKotlinSourceDependency(
|
||||||
companion object {
|
type = type,
|
||||||
fun byName(resolveSourceSetName: (IdeaKotlinProjectArtifactDependency) -> String?): Resolver {
|
extras = extras.toMutableExtras(),
|
||||||
return DefaultProjectArtifactDependencyResolver(resolveSourceSetName)
|
coordinates = IdeaKotlinSourceCoordinates(
|
||||||
|
project = coordinates.project,
|
||||||
|
sourceSetName = sourceSetName
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
.onEach { it.projectArtifactDependencyOrigin = this }
|
||||||
fun composite(vararg resolver: Resolver?) =
|
.toSet()
|
||||||
composite(resolver.toList())
|
|
||||||
|
|
||||||
fun composite(resolvers: Iterable<Resolver?>): Resolver =
|
|
||||||
CompositeProjectArtifactDependencyResolver(resolvers.filterNotNull())
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal companion object {
|
internal companion object {
|
||||||
const val serialVersionUID = 0L
|
const val serialVersionUID = 0L
|
||||||
}
|
|
||||||
}
|
var IdeaKotlinSourceDependency.projectArtifactDependencyOrigin by extrasKeyOf<IdeaKotlinProjectArtifactDependency>("origin")
|
||||||
|
private set
|
||||||
fun IdeaKotlinProjectArtifactDependency.resolved(resolver: IdeaKotlinProjectArtifactDependency.Resolver): IdeaKotlinSourceDependency? {
|
|
||||||
return resolver.resolve(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
private class DefaultProjectArtifactDependencyResolver(
|
|
||||||
private val resolveSourceSetName: (IdeaKotlinProjectArtifactDependency) -> String?
|
|
||||||
) : IdeaKotlinProjectArtifactDependency.Resolver {
|
|
||||||
override fun resolve(dependency: IdeaKotlinProjectArtifactDependency): IdeaKotlinSourceDependency? {
|
|
||||||
return IdeaKotlinSourceDependency(
|
|
||||||
type = dependency.type,
|
|
||||||
coordinates = IdeaKotlinSourceCoordinates(
|
|
||||||
project = dependency.coordinates.project,
|
|
||||||
sourceSetName = resolveSourceSetName(dependency) ?: return null
|
|
||||||
),
|
|
||||||
extras = dependency.extras
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class CompositeProjectArtifactDependencyResolver(
|
|
||||||
private val resolvers: List<IdeaKotlinProjectArtifactDependency.Resolver>
|
|
||||||
) : IdeaKotlinProjectArtifactDependency.Resolver {
|
|
||||||
override fun resolve(dependency: IdeaKotlinProjectArtifactDependency): IdeaKotlinSourceDependency? {
|
|
||||||
return resolvers.firstNotNullOfOrNull { resolver -> resolver.resolve(dependency) }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user