[Gradle] Implement IdeaKotlinProjectArtifactDependency.Resolver

KT-55112
This commit is contained in:
Sebastian Sellmair
2022-11-25 12:49:52 +01:00
committed by Space Team
parent 0aad848757
commit 273f8a8434
@@ -14,7 +14,36 @@ data class IdeaKotlinProjectArtifactDependency(
override val extras: MutableExtras = mutableExtrasOf()
) : IdeaKotlinDependency {
fun interface Resolver {
fun resolve(dependency: IdeaKotlinProjectArtifactDependency): IdeaKotlinSourceDependency?
companion object {
fun byName(resolveSourceSetName: (IdeaKotlinProjectArtifactDependency) -> String?): Resolver {
return DefaultProjectArtifactDependencyResolver(resolveSourceSetName)
}
}
}
internal companion object {
const val serialVersionUID = 0L
}
}
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
)
}
}