[Gradle] IdeMultiplatformImport: Support LibraryBinaryIdentifier

This commit is contained in:
Sebastian Sellmair
2022-11-29 11:13:01 +01:00
committed by Space Team
parent 46928eaa0b
commit 05b8a26a17
4 changed files with 20 additions and 6 deletions
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.ide
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtension
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtensionBuilder
@@ -162,7 +162,7 @@ interface IdeMultiplatformImport {
@JvmStatic
fun instance(project: Project): IdeMultiplatformImport {
return project.extraProperties.getOrPut(IdeMultiplatformImport::class.java.name) {
IdeMultiplatformImport(project.multiplatformExtension)
IdeMultiplatformImport(project.kotlinExtension)
}
}
}
@@ -5,13 +5,13 @@
package org.jetbrains.kotlin.gradle.plugin.ide
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializer
import org.jetbrains.kotlin.gradle.kpm.idea.kotlinDebugKey
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.SourceSetConstraint
import org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers.*
fun IdeMultiplatformImport(extension: KotlinMultiplatformExtension): IdeMultiplatformImport {
internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMultiplatformImport {
return IdeMultiplatformImportImpl(extension).apply {
registerDependencyResolver(
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.gradle.plugin.ide
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
import org.jetbrains.kotlin.gradle.idea.proto.tcs.toByteArray
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtension
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinSerializationContext
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.tooling.core.Extras
internal class IdeMultiplatformImportImpl(
private val extension: KotlinMultiplatformExtension
private val extension: KotlinProjectExtension
) : IdeMultiplatformImport {
override fun resolveDependencies(sourceSetName: String): Set<IdeaKotlinDependency> {
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers
import org.gradle.api.artifacts.ArtifactView
import org.gradle.api.artifacts.component.LibraryBinaryIdentifier
import org.gradle.api.artifacts.component.ModuleComponentIdentifier
import org.gradle.api.artifacts.component.ModuleComponentSelector
import org.gradle.api.artifacts.component.ProjectComponentIdentifier
@@ -96,6 +97,19 @@ internal class IdePlatformDependencyResolver(
)
}
is LibraryBinaryIdentifier -> {
IdeaKotlinResolvedBinaryDependency(
binaryType = binaryType,
coordinates = IdeaKotlinBinaryCoordinates(
group = componentId.projectPath + "(${componentId.variant})",
module = componentId.libraryName,
version = null, sourceSetName = null
),
binaryFile = artifact.file
)
}
is OpaqueComponentArtifactIdentifier -> {
/* Such dependencies *would* require implementing a resolver */
null