[kpm] kotlin-gradle-plugin: Introduce IdeaKpm* naming convention (1/2)
This commit is contained in:
committed by
Space
parent
00edca4532
commit
904fc00dde
+1
-1
@@ -28,5 +28,5 @@ fun KotlinPm20ProjectExtension.androidPrototype() {
|
|||||||
instrumentedTest { createKotlinAndroidVariant(androidVariant.testVariant ?: return@instrumentedTest) }
|
instrumentedTest { createKotlinAndroidVariant(androidVariant.testVariant ?: return@instrumentedTest) }
|
||||||
}
|
}
|
||||||
|
|
||||||
setupIdeaKotlinFragmentDependencyResolver()
|
setupIdeaKpmFragmentDependencyResolver()
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -10,10 +10,10 @@ import org.gradle.api.attributes.Usage
|
|||||||
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||||
import org.jetbrains.kotlin.gradle.kpm.external.project
|
import org.jetbrains.kotlin.gradle.kpm.external.project
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency.Companion.CLASSPATH_BINARY_TYPE
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency.Companion.CLASSPATH_BINARY_TYPE
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinProjectModelBuilder.FragmentConstraint
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmProjectModelBuilder.FragmentConstraint
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmResolvedBinaryDependencyImpl
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmResolvedBinaryDependencyImpl
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.InternalKotlinGradlePluginApi
|
import org.jetbrains.kotlin.gradle.kpm.idea.InternalKotlinGradlePluginApi
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.configureIdeaKotlinSpecialPlatformDependencyResolution
|
import org.jetbrains.kotlin.gradle.kpm.idea.configureIdeaKpmSpecialPlatformDependencyResolution
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.containingVariants
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.containingVariants
|
||||||
@@ -29,8 +29,8 @@ val isAndroidAndJvmSharedFragment = FragmentConstraint constraint@{ fragment ->
|
|||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExternalVariantApi::class, InternalKotlinGradlePluginApi::class)
|
@OptIn(ExternalVariantApi::class, InternalKotlinGradlePluginApi::class)
|
||||||
internal fun KotlinPm20ProjectExtension.setupIdeaKotlinFragmentDependencyResolver() {
|
internal fun KotlinPm20ProjectExtension.setupIdeaKpmFragmentDependencyResolver() {
|
||||||
configureIdeaKotlinSpecialPlatformDependencyResolution {
|
configureIdeaKpmSpecialPlatformDependencyResolution {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Handle android + jvm use cases:
|
Handle android + jvm use cases:
|
||||||
|
|||||||
+3
-3
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.kpm.external
|
|||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension
|
import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinProjectModelBuilder
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmProjectModelBuilder
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
||||||
|
|
||||||
@RequiresOptIn("API is intended to build external Kotlin Targets.")
|
@RequiresOptIn("API is intended to build external Kotlin Targets.")
|
||||||
@@ -18,8 +18,8 @@ val KotlinTopLevelExtension.project: Project
|
|||||||
get() = this.project
|
get() = this.project
|
||||||
|
|
||||||
@ExternalVariantApi
|
@ExternalVariantApi
|
||||||
val KotlinPm20ProjectExtension.ideaKotlinProjectModelBuilder: IdeaKotlinProjectModelBuilder
|
val KotlinPm20ProjectExtension.ideaKpmProjectModelBuilder: IdeaKpmProjectModelBuilder
|
||||||
get() = this.ideaKotlinProjectModelBuilder
|
get() = this.ideaKpmProjectModelBuilder
|
||||||
|
|
||||||
@ExternalVariantApi
|
@ExternalVariantApi
|
||||||
fun GradleKpmModule.createExternalJvmVariant(
|
fun GradleKpmModule.createExternalJvmVariant(
|
||||||
|
|||||||
+15
-15
@@ -8,8 +8,8 @@
|
|||||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinPlatformDependencyResolver.ArtifactResolution
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmPlatformDependencyResolver.ArtifactResolution
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinProjectModelBuilder.*
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmProjectModelBuilder.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmConfigurationAttributesSetup
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmConfigurationAttributesSetup
|
||||||
|
|
||||||
@@ -18,21 +18,21 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmConfigurationAttribu
|
|||||||
annotation class ExternalVariantPlatformDependencyResolutionDsl
|
annotation class ExternalVariantPlatformDependencyResolutionDsl
|
||||||
|
|
||||||
@ExternalVariantApi
|
@ExternalVariantApi
|
||||||
fun KotlinPm20ProjectExtension.configureIdeaKotlinSpecialPlatformDependencyResolution(
|
fun KotlinPm20ProjectExtension.configureIdeaKpmSpecialPlatformDependencyResolution(
|
||||||
configure: IdeaKotlinPlatformDependencyResolutionDslHandle.() -> Unit
|
configure: IdeaKpmPlatformDependencyResolutionDslHandle.() -> Unit
|
||||||
) {
|
) {
|
||||||
IdeaKotlinPlatformDependencyResolutionDslHandle(ideaKotlinProjectModelBuilder).also(configure).setup()
|
IdeaKpmPlatformDependencyResolutionDslHandle(ideaKpmProjectModelBuilder).also(configure).setup()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExternalVariantPlatformDependencyResolutionDsl
|
@ExternalVariantPlatformDependencyResolutionDsl
|
||||||
class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor(
|
class IdeaKpmPlatformDependencyResolutionDslHandle internal constructor(
|
||||||
private val toolingModelBuilder: IdeaKotlinProjectModelBuilder,
|
private val toolingModelBuilder: IdeaKpmProjectModelBuilder,
|
||||||
private val constraint: FragmentConstraint = FragmentConstraint.unconstrained,
|
private val constraint: FragmentConstraint = FragmentConstraint.unconstrained,
|
||||||
private val parent: IdeaKotlinPlatformDependencyResolutionDslHandle? = null
|
private val parent: IdeaKpmPlatformDependencyResolutionDslHandle? = null
|
||||||
) {
|
) {
|
||||||
private val artifactViewDslHandles = mutableListOf<ArtifactViewDslHandle>()
|
private val artifactViewDslHandles = mutableListOf<ArtifactViewDslHandle>()
|
||||||
private val children = mutableListOf<IdeaKotlinPlatformDependencyResolutionDslHandle>()
|
private val children = mutableListOf<IdeaKpmPlatformDependencyResolutionDslHandle>()
|
||||||
private val additionalDependencies = mutableListOf<IdeaKotlinDependencyResolver>()
|
private val additionalDependencies = mutableListOf<IdeaKpmDependencyResolver>()
|
||||||
|
|
||||||
@ExternalVariantPlatformDependencyResolutionDsl
|
@ExternalVariantPlatformDependencyResolutionDsl
|
||||||
var platformResolutionAttributes: GradleKpmConfigurationAttributesSetup<GradleKpmFragment>? = null
|
var platformResolutionAttributes: GradleKpmConfigurationAttributesSetup<GradleKpmFragment>? = null
|
||||||
@@ -54,9 +54,9 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor(
|
|||||||
@ExternalVariantPlatformDependencyResolutionDsl
|
@ExternalVariantPlatformDependencyResolutionDsl
|
||||||
fun withConstraint(
|
fun withConstraint(
|
||||||
constraint: FragmentConstraint,
|
constraint: FragmentConstraint,
|
||||||
configure: IdeaKotlinPlatformDependencyResolutionDslHandle.() -> Unit
|
configure: IdeaKpmPlatformDependencyResolutionDslHandle.() -> Unit
|
||||||
) {
|
) {
|
||||||
children += IdeaKotlinPlatformDependencyResolutionDslHandle(
|
children += IdeaKpmPlatformDependencyResolutionDslHandle(
|
||||||
toolingModelBuilder, constraint, this,
|
toolingModelBuilder, constraint, this,
|
||||||
).apply(configure)
|
).apply(configure)
|
||||||
}
|
}
|
||||||
@@ -77,7 +77,7 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor(
|
|||||||
|
|
||||||
@ExternalVariantPlatformDependencyResolutionDsl
|
@ExternalVariantPlatformDependencyResolutionDsl
|
||||||
fun additionalDependencies(dependencyProvider: (GradleKpmFragment) -> List<IdeaKpmDependency>) {
|
fun additionalDependencies(dependencyProvider: (GradleKpmFragment) -> List<IdeaKpmDependency>) {
|
||||||
this.additionalDependencies += IdeaKotlinDependencyResolver { fragment -> dependencyProvider(fragment).toSet() }
|
this.additionalDependencies += IdeaKpmDependencyResolver { fragment -> dependencyProvider(fragment).toSet() }
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun setup() {
|
internal fun setup() {
|
||||||
@@ -89,7 +89,7 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor(
|
|||||||
/* Setup artifact views */
|
/* Setup artifact views */
|
||||||
artifactViewDslHandles.toList().forEach { artifactViewDslHandle ->
|
artifactViewDslHandles.toList().forEach { artifactViewDslHandle ->
|
||||||
toolingModelBuilder.registerDependencyResolver(
|
toolingModelBuilder.registerDependencyResolver(
|
||||||
IdeaKotlinPlatformDependencyResolver(
|
IdeaKpmPlatformDependencyResolver(
|
||||||
binaryType = artifactViewDslHandle.binaryType,
|
binaryType = artifactViewDslHandle.binaryType,
|
||||||
artifactResolution = ArtifactResolution.Variant(artifactViewDslHandle.attributes)
|
artifactResolution = ArtifactResolution.Variant(artifactViewDslHandle.attributes)
|
||||||
),
|
),
|
||||||
@@ -100,7 +100,7 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor(
|
|||||||
|
|
||||||
if (platformResolutionAttributes != null) {
|
if (platformResolutionAttributes != null) {
|
||||||
toolingModelBuilder.registerDependencyResolver(
|
toolingModelBuilder.registerDependencyResolver(
|
||||||
IdeaKotlinPlatformDependencyResolver(
|
IdeaKpmPlatformDependencyResolver(
|
||||||
binaryType = artifactViewDslHandle.binaryType,
|
binaryType = artifactViewDslHandle.binaryType,
|
||||||
artifactResolution = ArtifactResolution.PlatformFragment(
|
artifactResolution = ArtifactResolution.PlatformFragment(
|
||||||
artifactViewAttributes = artifactViewDslHandle.attributes,
|
artifactViewAttributes = artifactViewDslHandle.attributes,
|
||||||
|
|||||||
+23
-23
@@ -7,47 +7,47 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
||||||
|
|
||||||
fun interface IdeaKotlinDependencyResolver {
|
fun interface IdeaKpmDependencyResolver {
|
||||||
fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency>
|
fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency>
|
||||||
|
|
||||||
object Empty : IdeaKotlinDependencyResolver {
|
object Empty : IdeaKpmDependencyResolver {
|
||||||
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> = emptySet()
|
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> = emptySet()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IdeaKotlinDependencyResolver(
|
fun IdeaKpmDependencyResolver(
|
||||||
resolvers: Iterable<IdeaKotlinDependencyResolver>
|
resolvers: Iterable<IdeaKpmDependencyResolver>
|
||||||
): IdeaKotlinDependencyResolver {
|
): IdeaKpmDependencyResolver {
|
||||||
val resolversList = resolvers.toList()
|
val resolversList = resolvers.toList()
|
||||||
if (resolversList.isEmpty()) return IdeaKotlinDependencyResolver.Empty
|
if (resolversList.isEmpty()) return IdeaKpmDependencyResolver.Empty
|
||||||
return CompositeIdeaKotlinDependencyResolver(resolversList)
|
return IdeaKpmCompositeDependencyResolver(resolversList)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IdeaKotlinDependencyResolver(
|
fun IdeaKpmDependencyResolver(
|
||||||
vararg resolvers: IdeaKotlinDependencyResolver
|
vararg resolvers: IdeaKpmDependencyResolver
|
||||||
): IdeaKotlinDependencyResolver = IdeaKotlinDependencyResolver(resolvers.toList())
|
): IdeaKpmDependencyResolver = IdeaKpmDependencyResolver(resolvers.toList())
|
||||||
|
|
||||||
operator fun IdeaKotlinDependencyResolver.plus(
|
operator fun IdeaKpmDependencyResolver.plus(
|
||||||
other: IdeaKotlinDependencyResolver
|
other: IdeaKpmDependencyResolver
|
||||||
): IdeaKotlinDependencyResolver {
|
): IdeaKpmDependencyResolver {
|
||||||
if (this is CompositeIdeaKotlinDependencyResolver && other is CompositeIdeaKotlinDependencyResolver) {
|
if (this is IdeaKpmCompositeDependencyResolver && other is IdeaKpmCompositeDependencyResolver) {
|
||||||
return CompositeIdeaKotlinDependencyResolver(this.children + other.children)
|
return IdeaKpmCompositeDependencyResolver(this.children + other.children)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this is CompositeIdeaKotlinDependencyResolver) {
|
if (this is IdeaKpmCompositeDependencyResolver) {
|
||||||
return CompositeIdeaKotlinDependencyResolver(this.children + other)
|
return IdeaKpmCompositeDependencyResolver(this.children + other)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (other is CompositeIdeaKotlinDependencyResolver) {
|
if (other is IdeaKpmCompositeDependencyResolver) {
|
||||||
return CompositeIdeaKotlinDependencyResolver(listOf(this) + other.children)
|
return IdeaKpmCompositeDependencyResolver(listOf(this) + other.children)
|
||||||
}
|
}
|
||||||
|
|
||||||
return CompositeIdeaKotlinDependencyResolver(listOf(this, other))
|
return IdeaKpmCompositeDependencyResolver(listOf(this, other))
|
||||||
}
|
}
|
||||||
|
|
||||||
private class CompositeIdeaKotlinDependencyResolver(
|
private class IdeaKpmCompositeDependencyResolver(
|
||||||
val children: List<IdeaKotlinDependencyResolver>
|
val children: List<IdeaKpmDependencyResolver>
|
||||||
) : IdeaKotlinDependencyResolver {
|
) : IdeaKpmDependencyResolver {
|
||||||
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
||||||
return children.flatMap { child -> child.resolve(fragment) }.toSet()
|
return children.flatMap { child -> child.resolve(fragment) }.toSet()
|
||||||
}
|
}
|
||||||
|
|||||||
+22
-22
@@ -8,51 +8,51 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An [IdeaKotlinDependencyTransformer] will be invoked after all [IdeaKotlinDependencyResolver] finished.
|
* An [IdeaKpmDependencyTransformer] will be invoked after all [IdeaKpmDependencyResolver] finished.
|
||||||
* The transformation step is allowed to entirely modify the resolution result. Typical applications would be dependency filtering,
|
* The transformation step is allowed to entirely modify the resolution result. Typical applications would be dependency filtering,
|
||||||
* or grouping. Adding additional dependencies might be harmful, since other transformers might not be able to see this additional
|
* or grouping. Adding additional dependencies might be harmful, since other transformers might not be able to see this additional
|
||||||
* dependency, running before the addition.
|
* dependency, running before the addition.
|
||||||
*
|
*
|
||||||
* Transformations can be scheduled in different phases see: [IdeaKotlinProjectModelBuilder.DependencyTransformationPhase]
|
* Transformations can be scheduled in different phases see: [IdeaKpmProjectModelBuilder.DependencyTransformationPhase]
|
||||||
*/
|
*/
|
||||||
fun interface IdeaKotlinDependencyTransformer {
|
fun interface IdeaKpmDependencyTransformer {
|
||||||
fun transform(
|
fun transform(
|
||||||
fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>
|
fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>
|
||||||
): Set<IdeaKpmDependency>
|
): Set<IdeaKpmDependency>
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IdeaKotlinDependencyResolver.withTransformer(transformer: IdeaKotlinDependencyTransformer) = IdeaKotlinDependencyResolver { fragment ->
|
fun IdeaKpmDependencyResolver.withTransformer(transformer: IdeaKpmDependencyTransformer) = IdeaKpmDependencyResolver { fragment ->
|
||||||
transformer.transform(fragment, this@withTransformer.resolve(fragment))
|
transformer.transform(fragment, this@withTransformer.resolve(fragment))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IdeaKotlinDependencyTransformer(
|
fun IdeaKpmDependencyTransformer(
|
||||||
transformers: List<IdeaKotlinDependencyTransformer>
|
transformers: List<IdeaKpmDependencyTransformer>
|
||||||
): IdeaKotlinDependencyTransformer = CompositeIdeaKotlinDependencyTransformer(transformers)
|
): IdeaKpmDependencyTransformer = IdeaKpmCompositeDependencyTransformer(transformers)
|
||||||
|
|
||||||
fun IdeaKotlinDependencyTransformer(
|
fun IdeaKpmDependencyTransformer(
|
||||||
vararg transformers: IdeaKotlinDependencyTransformer
|
vararg transformers: IdeaKpmDependencyTransformer
|
||||||
): IdeaKotlinDependencyTransformer = IdeaKotlinDependencyTransformer(transformers.toList())
|
): IdeaKpmDependencyTransformer = IdeaKpmDependencyTransformer(transformers.toList())
|
||||||
|
|
||||||
operator fun IdeaKotlinDependencyTransformer.plus(other: IdeaKotlinDependencyTransformer):
|
operator fun IdeaKpmDependencyTransformer.plus(other: IdeaKpmDependencyTransformer):
|
||||||
IdeaKotlinDependencyTransformer {
|
IdeaKpmDependencyTransformer {
|
||||||
if (this is CompositeIdeaKotlinDependencyTransformer && other is CompositeIdeaKotlinDependencyTransformer) {
|
if (this is IdeaKpmCompositeDependencyTransformer && other is IdeaKpmCompositeDependencyTransformer) {
|
||||||
return CompositeIdeaKotlinDependencyTransformer(this.transformers + other.transformers)
|
return IdeaKpmCompositeDependencyTransformer(this.transformers + other.transformers)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this is CompositeIdeaKotlinDependencyTransformer) {
|
if (this is IdeaKpmCompositeDependencyTransformer) {
|
||||||
return CompositeIdeaKotlinDependencyTransformer(this.transformers + other)
|
return IdeaKpmCompositeDependencyTransformer(this.transformers + other)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (other is CompositeIdeaKotlinDependencyTransformer) {
|
if (other is IdeaKpmCompositeDependencyTransformer) {
|
||||||
return CompositeIdeaKotlinDependencyTransformer(listOf(this) + other.transformers)
|
return IdeaKpmCompositeDependencyTransformer(listOf(this) + other.transformers)
|
||||||
}
|
}
|
||||||
|
|
||||||
return CompositeIdeaKotlinDependencyTransformer(listOf(this, other))
|
return IdeaKpmCompositeDependencyTransformer(listOf(this, other))
|
||||||
}
|
}
|
||||||
|
|
||||||
private class CompositeIdeaKotlinDependencyTransformer(
|
private class IdeaKpmCompositeDependencyTransformer(
|
||||||
val transformers: List<IdeaKotlinDependencyTransformer>
|
val transformers: List<IdeaKpmDependencyTransformer>
|
||||||
) : IdeaKotlinDependencyTransformer {
|
) : IdeaKpmDependencyTransformer {
|
||||||
override fun transform(
|
override fun transform(
|
||||||
fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>
|
fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>
|
||||||
): Set<IdeaKpmDependency> {
|
): Set<IdeaKpmDependency> {
|
||||||
|
|||||||
+44
-44
@@ -13,86 +13,86 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
|||||||
import org.jetbrains.kotlin.tooling.core.UnsafeApi
|
import org.jetbrains.kotlin.tooling.core.UnsafeApi
|
||||||
|
|
||||||
@OptIn(UnsafeApi::class)
|
@OptIn(UnsafeApi::class)
|
||||||
internal fun IdeaKotlinProjectModelBuilder.Companion.default(
|
internal fun IdeaKpmProjectModelBuilder.Companion.default(
|
||||||
extension: KotlinPm20ProjectExtension
|
extension: KotlinPm20ProjectExtension
|
||||||
) = IdeaKotlinProjectModelBuilderImpl(extension).apply {
|
) = IdeaKpmProjectModelBuilderImpl(extension).apply {
|
||||||
val fragmentMetadataResolverFactory = GradleKpmFragmentGranularMetadataResolverFactory()
|
val fragmentMetadataResolverFactory = GradleKpmFragmentGranularMetadataResolverFactory()
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeaKotlinRefinesDependencyResolver,
|
resolver = IdeaKpmRefinesDependencyResolver,
|
||||||
constraint = IdeaKotlinProjectModelBuilder.FragmentConstraint.unconstrained,
|
constraint = IdeaKpmProjectModelBuilder.FragmentConstraint.unconstrained,
|
||||||
phase = IdeaKotlinProjectModelBuilder.DependencyResolutionPhase.SourceDependencyResolution,
|
phase = IdeaKpmProjectModelBuilder.DependencyResolutionPhase.SourceDependencyResolution,
|
||||||
level = IdeaKotlinProjectModelBuilder.DependencyResolutionLevel.Default
|
level = IdeaKpmProjectModelBuilder.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeaKotlinGranularFragmentDependencyResolver(fragmentMetadataResolverFactory),
|
resolver = IdeaKpmGranularFragmentDependencyResolver(fragmentMetadataResolverFactory),
|
||||||
constraint = IdeaKotlinProjectModelBuilder.FragmentConstraint.unconstrained,
|
constraint = IdeaKpmProjectModelBuilder.FragmentConstraint.unconstrained,
|
||||||
phase = IdeaKotlinProjectModelBuilder.DependencyResolutionPhase.SourceDependencyResolution,
|
phase = IdeaKpmProjectModelBuilder.DependencyResolutionPhase.SourceDependencyResolution,
|
||||||
level = IdeaKotlinProjectModelBuilder.DependencyResolutionLevel.Default
|
level = IdeaKpmProjectModelBuilder.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeaKotlinMetadataBinaryDependencyResolver(fragmentMetadataResolverFactory),
|
resolver = IdeaKpmMetadataBinaryDependencyResolver(fragmentMetadataResolverFactory),
|
||||||
constraint = !IdeaKotlinProjectModelBuilder.FragmentConstraint.isVariant,
|
constraint = !IdeaKpmProjectModelBuilder.FragmentConstraint.isVariant,
|
||||||
phase = IdeaKotlinProjectModelBuilder.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeaKpmProjectModelBuilder.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeaKotlinProjectModelBuilder.DependencyResolutionLevel.Default
|
level = IdeaKpmProjectModelBuilder.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeaKotlinOriginalMetadataDependencyResolver(fragmentMetadataResolverFactory),
|
resolver = IdeaKpmOriginalMetadataDependencyResolver(fragmentMetadataResolverFactory),
|
||||||
constraint = !IdeaKotlinProjectModelBuilder.FragmentConstraint.isVariant,
|
constraint = !IdeaKpmProjectModelBuilder.FragmentConstraint.isVariant,
|
||||||
phase = IdeaKotlinProjectModelBuilder.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeaKpmProjectModelBuilder.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeaKotlinProjectModelBuilder.DependencyResolutionLevel.Default
|
level = IdeaKpmProjectModelBuilder.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeaKotlinPlatformDependencyResolver(),
|
resolver = IdeaKpmPlatformDependencyResolver(),
|
||||||
constraint = IdeaKotlinProjectModelBuilder.FragmentConstraint.isVariant,
|
constraint = IdeaKpmProjectModelBuilder.FragmentConstraint.isVariant,
|
||||||
phase = IdeaKotlinProjectModelBuilder.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeaKpmProjectModelBuilder.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeaKotlinProjectModelBuilder.DependencyResolutionLevel.Default
|
level = IdeaKpmProjectModelBuilder.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeaKotlinNativeStdlibDependencyResolver,
|
resolver = IdeaKpmNativeStdlibDependencyResolver,
|
||||||
constraint = IdeaKotlinProjectModelBuilder.FragmentConstraint.isNative,
|
constraint = IdeaKpmProjectModelBuilder.FragmentConstraint.isNative,
|
||||||
phase = IdeaKotlinProjectModelBuilder.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeaKpmProjectModelBuilder.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeaKotlinProjectModelBuilder.DependencyResolutionLevel.Default
|
level = IdeaKpmProjectModelBuilder.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeaKotlinNativePlatformDependencyResolver(),
|
resolver = IdeaKpmNativePlatformDependencyResolver(),
|
||||||
constraint = IdeaKotlinProjectModelBuilder.FragmentConstraint.isNative,
|
constraint = IdeaKpmProjectModelBuilder.FragmentConstraint.isNative,
|
||||||
phase = IdeaKotlinProjectModelBuilder.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeaKpmProjectModelBuilder.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeaKotlinProjectModelBuilder.DependencyResolutionLevel.Default
|
level = IdeaKpmProjectModelBuilder.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeaKotlinSourcesAndDocumentationResolver(),
|
resolver = IdeaKpmSourcesAndDocumentationResolver(),
|
||||||
constraint = IdeaKotlinProjectModelBuilder.FragmentConstraint.unconstrained,
|
constraint = IdeaKpmProjectModelBuilder.FragmentConstraint.unconstrained,
|
||||||
phase = IdeaKotlinProjectModelBuilder.DependencyResolutionPhase.PostDependencyResolution,
|
phase = IdeaKpmProjectModelBuilder.DependencyResolutionPhase.PostDependencyResolution,
|
||||||
level = IdeaKotlinProjectModelBuilder.DependencyResolutionLevel.Default
|
level = IdeaKpmProjectModelBuilder.DependencyResolutionLevel.Default
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyTransformer(
|
registerDependencyTransformer(
|
||||||
transformer = IdeaKotlinSinglePlatformStdlibCommonFilter,
|
transformer = IdeaKpmSinglePlatformStdlibCommonFilter,
|
||||||
phase = IdeaKotlinProjectModelBuilder.DependencyTransformationPhase.DependencyFilteringPhase,
|
phase = IdeaKpmProjectModelBuilder.DependencyTransformationPhase.DependencyFilteringPhase,
|
||||||
constraint = IdeaKotlinProjectModelBuilder.FragmentConstraint.unconstrained
|
constraint = IdeaKpmProjectModelBuilder.FragmentConstraint.unconstrained
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyTransformer(
|
registerDependencyTransformer(
|
||||||
transformer = IdeaKotlinUnusedSourcesAndDocumentationFilter,
|
transformer = IdeaKpmUnusedSourcesAndDocumentationFilter,
|
||||||
phase = IdeaKotlinProjectModelBuilder.DependencyTransformationPhase.DependencyFilteringPhase,
|
phase = IdeaKpmProjectModelBuilder.DependencyTransformationPhase.DependencyFilteringPhase,
|
||||||
constraint = IdeaKotlinProjectModelBuilder.FragmentConstraint.unconstrained
|
constraint = IdeaKpmProjectModelBuilder.FragmentConstraint.unconstrained
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyEffect(
|
registerDependencyEffect(
|
||||||
effect = IdeaKotlinDependencyLogger,
|
effect = IdeaKpmDependencyLogger,
|
||||||
constraint = IdeaKotlinProjectModelBuilder.FragmentConstraint.unconstrained
|
constraint = IdeaKpmProjectModelBuilder.FragmentConstraint.unconstrained
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyEffect(
|
registerDependencyEffect(
|
||||||
effect = IdeaKotlinMissingFileDependencyLogger,
|
effect = IdeaKpmMissingFileDependencyLogger,
|
||||||
constraint = IdeaKotlinProjectModelBuilder.FragmentConstraint.unconstrained
|
constraint = IdeaKpmProjectModelBuilder.FragmentConstraint.unconstrained
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-8
@@ -16,25 +16,25 @@ import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
|||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
import java.io.ObjectOutputStream
|
import java.io.ObjectOutputStream
|
||||||
|
|
||||||
internal fun Project.locateOrRegisterBuildIdeaKotlinProjectModelTask(): TaskProvider<BuildIdeaKotlinProjectModelTask> {
|
internal fun Project.locateOrRegisterIdeaKpmBuildProjectModelTask(): TaskProvider<IdeaKpmBuildProjectModelTask> {
|
||||||
return locateOrRegisterTask(BuildIdeaKotlinProjectModelTask.defaultTaskName)
|
return locateOrRegisterTask(IdeaKpmBuildProjectModelTask.defaultTaskName)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal open class BuildIdeaKotlinProjectModelTask : DefaultTask() {
|
internal open class IdeaKpmBuildProjectModelTask : DefaultTask() {
|
||||||
@OutputDirectory
|
@OutputDirectory
|
||||||
val outputDirectory = project.buildDir.resolve("ideaKotlinProjectModel")
|
val outputDirectory = project.buildDir.resolve("ideaKpmProjectModel")
|
||||||
|
|
||||||
private val builder = project.pm20Extension.ideaKotlinProjectModelBuilder
|
private val builder = project.pm20Extension.ideaKpmProjectModelBuilder
|
||||||
|
|
||||||
init {
|
init {
|
||||||
outputs.upToDateWhen { false }
|
outputs.upToDateWhen { false }
|
||||||
}
|
}
|
||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
protected fun buildIdeaKotlinProjectModel() {
|
protected fun buildIdeaKpmProjectModel() {
|
||||||
outputDirectory.mkdirs()
|
outputDirectory.mkdirs()
|
||||||
|
|
||||||
val model = builder.buildIdeaKotlinProjectModel()
|
val model = builder.buildIdeaKpmProjectModel()
|
||||||
val textFile = outputDirectory.resolve("model.txt")
|
val textFile = outputDirectory.resolve("model.txt")
|
||||||
textFile.writeText(model.toString())
|
textFile.writeText(model.toString())
|
||||||
|
|
||||||
@@ -49,6 +49,6 @@ internal open class BuildIdeaKotlinProjectModelTask : DefaultTask() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val defaultTaskName = "buildIdeaKotlinProjectModel"
|
const val defaultTaskName = "buildIdeaKpmProjectModel"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -8,14 +8,14 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An [IdeaKotlinDependencyEffect] is invoked last in the dependency resolution pipeline.
|
* An [IdeaKpmDependencyEffect] is invoked last in the dependency resolution pipeline.
|
||||||
* It is not intended/capable of changing the resolution result, but can trigger side-effects, being sure
|
* It is not intended/capable of changing the resolution result, but can trigger side-effects, being sure
|
||||||
* that the dependency resolution result is final.
|
* that the dependency resolution result is final.
|
||||||
*/
|
*/
|
||||||
fun interface IdeaKotlinDependencyEffect {
|
fun interface IdeaKpmDependencyEffect {
|
||||||
operator fun invoke(fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>)
|
operator fun invoke(fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IdeaKotlinDependencyResolver.withEffect(effect: IdeaKotlinDependencyEffect) = IdeaKotlinDependencyResolver { fragment ->
|
fun IdeaKpmDependencyResolver.withEffect(effect: IdeaKpmDependencyEffect) = IdeaKpmDependencyResolver { fragment ->
|
||||||
this@withEffect.resolve(fragment).also { dependencies -> effect(fragment, dependencies) }
|
this@withEffect.resolve(fragment).also { dependencies -> effect(fragment, dependencies) }
|
||||||
}
|
}
|
||||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.path
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.path
|
||||||
|
|
||||||
internal object IdeaKotlinDependencyLogger : IdeaKotlinDependencyEffect {
|
internal object IdeaKpmDependencyLogger : IdeaKpmDependencyEffect {
|
||||||
override fun invoke(
|
override fun invoke(
|
||||||
fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>
|
fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>
|
||||||
) {
|
) {
|
||||||
+2
-2
@@ -13,9 +13,9 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule.Companion.mod
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.currentBuildId
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.currentBuildId
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toKpmModuleDependency
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toKpmModuleDependency
|
||||||
|
|
||||||
internal class IdeaKotlinGranularFragmentDependencyResolver(
|
internal class IdeaKpmGranularFragmentDependencyResolver(
|
||||||
private val fragmentGranularMetadataResolverFactory: GradleKpmFragmentGranularMetadataResolverFactory
|
private val fragmentGranularMetadataResolverFactory: GradleKpmFragmentGranularMetadataResolverFactory
|
||||||
) : IdeaKotlinDependencyResolver {
|
) : IdeaKpmDependencyResolver {
|
||||||
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
||||||
return fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions
|
return fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions
|
||||||
.filterIsInstance<ChooseVisibleSourceSets>()
|
.filterIsInstance<ChooseVisibleSourceSets>()
|
||||||
+2
-2
@@ -15,9 +15,9 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule.Companion.mod
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toKpmModuleDependency
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toKpmModuleDependency
|
||||||
import org.jetbrains.kotlin.gradle.utils.withTemporaryDirectory
|
import org.jetbrains.kotlin.gradle.utils.withTemporaryDirectory
|
||||||
|
|
||||||
internal class IdeaKotlinMetadataBinaryDependencyResolver(
|
internal class IdeaKpmMetadataBinaryDependencyResolver(
|
||||||
private val fragmentGranularMetadataResolverFactory: GradleKpmFragmentGranularMetadataResolverFactory
|
private val fragmentGranularMetadataResolverFactory: GradleKpmFragmentGranularMetadataResolverFactory
|
||||||
) : IdeaKotlinDependencyResolver {
|
) : IdeaKpmDependencyResolver {
|
||||||
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
||||||
return fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions
|
return fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions
|
||||||
.filterIsInstance<ChooseVisibleSourceSets>()
|
.filterIsInstance<ChooseVisibleSourceSets>()
|
||||||
+1
-1
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.path
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.path
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
|
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
|
||||||
|
|
||||||
internal object IdeaKotlinMissingFileDependencyLogger : IdeaKotlinDependencyEffect {
|
internal object IdeaKpmMissingFileDependencyLogger : IdeaKpmDependencyEffect {
|
||||||
override fun invoke(fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>) {
|
override fun invoke(fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>) {
|
||||||
dependencies.filterIsInstance<IdeaKpmResolvedBinaryDependency>()
|
dependencies.filterIsInstance<IdeaKpmResolvedBinaryDependency>()
|
||||||
.filter { !it.binaryFile.exists() }
|
.filter { !it.binaryFile.exists() }
|
||||||
+1
-1
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.library.shortName
|
|||||||
import org.jetbrains.kotlin.library.uniqueName
|
import org.jetbrains.kotlin.library.uniqueName
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
internal class IdeaKotlinNativePlatformDependencyResolver : IdeaKotlinDependencyResolver {
|
internal class IdeaKpmNativePlatformDependencyResolver : IdeaKpmDependencyResolver {
|
||||||
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
||||||
val konanTargets = fragment.containingVariants
|
val konanTargets = fragment.containingVariants
|
||||||
.map { it as? GradleKpmNativeVariantInternal ?: return emptySet() }
|
.map { it as? GradleKpmNativeVariantInternal ?: return emptySet() }
|
||||||
+1
-1
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.compilerRunner.konanHome
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
|
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
||||||
|
|
||||||
internal object IdeaKotlinNativeStdlibDependencyResolver : IdeaKotlinDependencyResolver {
|
internal object IdeaKpmNativeStdlibDependencyResolver : IdeaKpmDependencyResolver {
|
||||||
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
||||||
return setOf(
|
return setOf(
|
||||||
IdeaKpmResolvedBinaryDependencyImpl(
|
IdeaKpmResolvedBinaryDependencyImpl(
|
||||||
+2
-2
@@ -11,9 +11,9 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragmentGranularMeta
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.resolvableMetadataConfigurationName
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.resolvableMetadataConfigurationName
|
||||||
|
|
||||||
internal class IdeaKotlinOriginalMetadataDependencyResolver(
|
internal class IdeaKpmOriginalMetadataDependencyResolver(
|
||||||
private val fragmentGranularMetadataResolverFactory: GradleKpmFragmentGranularMetadataResolverFactory
|
private val fragmentGranularMetadataResolverFactory: GradleKpmFragmentGranularMetadataResolverFactory
|
||||||
) : IdeaKotlinDependencyResolver {
|
) : IdeaKpmDependencyResolver {
|
||||||
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
||||||
val dependencyIdentifiers = fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions
|
val dependencyIdentifiers = fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions
|
||||||
.filterIsInstance<KeepOriginalDependency>()
|
.filterIsInstance<KeepOriginalDependency>()
|
||||||
+4
-4
@@ -12,7 +12,7 @@ import org.gradle.api.artifacts.component.ModuleComponentIdentifier
|
|||||||
import org.gradle.api.artifacts.component.ModuleComponentSelector
|
import org.gradle.api.artifacts.component.ModuleComponentSelector
|
||||||
import org.gradle.api.artifacts.component.ProjectComponentIdentifier
|
import org.gradle.api.artifacts.component.ProjectComponentIdentifier
|
||||||
import org.gradle.internal.resolve.ModuleVersionResolveException
|
import org.gradle.internal.resolve.ModuleVersionResolveException
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinPlatformDependencyResolver.*
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmPlatformDependencyResolver.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmConfigurationAttributesSetup
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmConfigurationAttributesSetup
|
||||||
|
|
||||||
@@ -21,12 +21,12 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmConfigurationAttribu
|
|||||||
* 'platform' binaries refer to actually linkable/executable artifacts (like .class files bundled as jar, or linkable native klibs)
|
* 'platform' binaries refer to actually linkable/executable artifacts (like .class files bundled as jar, or linkable native klibs)
|
||||||
* This resolver is capable of resolving those artifacts even for non-variant "platform-like" fragments.
|
* This resolver is capable of resolving those artifacts even for non-variant "platform-like" fragments.
|
||||||
* It will then use the [GradleKpmFragment.transitiveApiConfiguration] and [GradleKpmFragment.transitiveImplementationConfiguratione]'s
|
* It will then use the [GradleKpmFragment.transitiveApiConfiguration] and [GradleKpmFragment.transitiveImplementationConfiguratione]'s
|
||||||
* to resolve those binaries. See [IdeaKotlinPlatformDependencyResolver.ArtifactResolution.PlatformFragment]
|
* to resolve those binaries. See [IdeaKpmPlatformDependencyResolver.ArtifactResolution.PlatformFragment]
|
||||||
*/
|
*/
|
||||||
class IdeaKotlinPlatformDependencyResolver(
|
class IdeaKpmPlatformDependencyResolver(
|
||||||
private val binaryType: String = IdeaKpmDependency.CLASSPATH_BINARY_TYPE,
|
private val binaryType: String = IdeaKpmDependency.CLASSPATH_BINARY_TYPE,
|
||||||
private val artifactResolution: ArtifactResolution = ArtifactResolution.Variant()
|
private val artifactResolution: ArtifactResolution = ArtifactResolution.Variant()
|
||||||
) : IdeaKotlinDependencyResolver {
|
) : IdeaKpmDependencyResolver {
|
||||||
|
|
||||||
sealed class ArtifactResolution {
|
sealed class ArtifactResolution {
|
||||||
/**
|
/**
|
||||||
+17
-17
@@ -4,7 +4,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.compilerRunner.konanHome
|
import org.jetbrains.kotlin.compilerRunner.konanHome
|
||||||
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinProjectModelBuilder.FragmentConstraint
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmProjectModelBuilder.FragmentConstraint
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.native
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.native
|
||||||
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
|
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
||||||
@@ -13,17 +13,17 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.containingVariants
|
|||||||
import org.jetbrains.kotlin.project.model.KpmVariant
|
import org.jetbrains.kotlin.project.model.KpmVariant
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
internal interface IdeaKotlinProjectModelBuildingContext {
|
internal interface IdeaKpmProjectModelBuildingContext {
|
||||||
val dependencyResolver: IdeaKotlinDependencyResolver
|
val dependencyResolver: IdeaKpmDependencyResolver
|
||||||
|
|
||||||
companion object Empty : IdeaKotlinProjectModelBuildingContext {
|
companion object Empty : IdeaKpmProjectModelBuildingContext {
|
||||||
override val dependencyResolver: IdeaKotlinDependencyResolver = IdeaKotlinDependencyResolver.Empty
|
override val dependencyResolver: IdeaKpmDependencyResolver = IdeaKpmDependencyResolver.Empty
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IdeaKotlinProjectModelBuilder {
|
interface IdeaKpmProjectModelBuilder {
|
||||||
/**
|
/**
|
||||||
* Any [IdeaKotlinDependencyResolver] has to be registered for a given dependency resolution phase in which it participates
|
* Any [IdeaKpmDependencyResolver] has to be registered for a given dependency resolution phase in which it participates
|
||||||
* The resolution phases will be executed in the order of their enum's ordinal.
|
* The resolution phases will be executed in the order of their enum's ordinal.
|
||||||
*/
|
*/
|
||||||
enum class DependencyResolutionPhase {
|
enum class DependencyResolutionPhase {
|
||||||
@@ -49,7 +49,7 @@ interface IdeaKotlinProjectModelBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Any [IdeaKotlinDependencyResolver] has to be registered specifying a certain resolution level.
|
* Any [IdeaKpmDependencyResolver] has to be registered specifying a certain resolution level.
|
||||||
* Generally, all resolvers registered in a given resolution level will work collaboratively, meaning the dependency resolution
|
* Generally, all resolvers registered in a given resolution level will work collaboratively, meaning the dependency resolution
|
||||||
* result is the aggregation of all resolvers running.
|
* result is the aggregation of all resolvers running.
|
||||||
*
|
*
|
||||||
@@ -62,7 +62,7 @@ interface IdeaKotlinProjectModelBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Any [IdeaKotlinDependencyTransformer] has to be registered for a given transformation phase.
|
* Any [IdeaKpmDependencyTransformer] has to be registered for a given transformation phase.
|
||||||
* The phases will be executed in the order of this enums ordinal.
|
* The phases will be executed in the order of this enums ordinal.
|
||||||
*/
|
*/
|
||||||
enum class DependencyTransformationPhase {
|
enum class DependencyTransformationPhase {
|
||||||
@@ -73,7 +73,7 @@ interface IdeaKotlinProjectModelBuilder {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Dependency transformation phase that is free entirely free in its transformation type.
|
* Dependency transformation phase that is free entirely free in its transformation type.
|
||||||
* Note: Adding dependencies to the resolution result might most likely better be modelled as [IdeaKotlinDependencyResolver]
|
* Note: Adding dependencies to the resolution result might most likely better be modelled as [IdeaKpmDependencyResolver]
|
||||||
*/
|
*/
|
||||||
FreeDependencyTransformationPhase,
|
FreeDependencyTransformationPhase,
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ interface IdeaKotlinProjectModelBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used for scoping [IdeaKotlinDependencyResolver], [IdeaKotlinDependencyTransformer] and [IdeaKotlinDependencyEffect]
|
* Used for scoping [IdeaKpmDependencyResolver], [IdeaKpmDependencyTransformer] and [IdeaKpmDependencyEffect]
|
||||||
*/
|
*/
|
||||||
fun interface FragmentConstraint {
|
fun interface FragmentConstraint {
|
||||||
operator fun invoke(fragment: GradleKpmFragment): Boolean
|
operator fun invoke(fragment: GradleKpmFragment): Boolean
|
||||||
@@ -105,7 +105,7 @@ interface IdeaKotlinProjectModelBuilder {
|
|||||||
|
|
||||||
@ExternalVariantApi
|
@ExternalVariantApi
|
||||||
fun registerDependencyResolver(
|
fun registerDependencyResolver(
|
||||||
resolver: IdeaKotlinDependencyResolver,
|
resolver: IdeaKpmDependencyResolver,
|
||||||
constraint: FragmentConstraint,
|
constraint: FragmentConstraint,
|
||||||
phase: DependencyResolutionPhase,
|
phase: DependencyResolutionPhase,
|
||||||
level: DependencyResolutionLevel = DependencyResolutionLevel.Default,
|
level: DependencyResolutionLevel = DependencyResolutionLevel.Default,
|
||||||
@@ -113,29 +113,29 @@ interface IdeaKotlinProjectModelBuilder {
|
|||||||
|
|
||||||
@ExternalVariantApi
|
@ExternalVariantApi
|
||||||
fun registerDependencyTransformer(
|
fun registerDependencyTransformer(
|
||||||
transformer: IdeaKotlinDependencyTransformer,
|
transformer: IdeaKpmDependencyTransformer,
|
||||||
constraint: FragmentConstraint,
|
constraint: FragmentConstraint,
|
||||||
phase: DependencyTransformationPhase
|
phase: DependencyTransformationPhase
|
||||||
)
|
)
|
||||||
|
|
||||||
@ExternalVariantApi
|
@ExternalVariantApi
|
||||||
fun registerDependencyEffect(
|
fun registerDependencyEffect(
|
||||||
effect: IdeaKotlinDependencyEffect,
|
effect: IdeaKpmDependencyEffect,
|
||||||
constraint: FragmentConstraint
|
constraint: FragmentConstraint
|
||||||
)
|
)
|
||||||
|
|
||||||
fun buildIdeaKotlinProjectModel(): IdeaKpmProject
|
fun buildIdeaKpmProjectModel(): IdeaKpmProject
|
||||||
|
|
||||||
companion object
|
companion object
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinProjectModel(extension: KotlinPm20ProjectExtension): IdeaKpmProject {
|
internal fun IdeaKpmProjectModelBuildingContext.IdeaKpmProject(extension: KotlinPm20ProjectExtension): IdeaKpmProject {
|
||||||
return IdeaKpmProjectImpl(
|
return IdeaKpmProjectImpl(
|
||||||
gradlePluginVersion = extension.project.getKotlinPluginVersion(),
|
gradlePluginVersion = extension.project.getKotlinPluginVersion(),
|
||||||
coreLibrariesVersion = extension.coreLibrariesVersion,
|
coreLibrariesVersion = extension.coreLibrariesVersion,
|
||||||
explicitApiModeCliOption = extension.explicitApi?.cliOption,
|
explicitApiModeCliOption = extension.explicitApi?.cliOption,
|
||||||
kotlinNativeHome = File(extension.project.konanHome).absoluteFile,
|
kotlinNativeHome = File(extension.project.konanHome).absoluteFile,
|
||||||
modules = extension.modules.map { module -> IdeaKotlinModule(module) }
|
modules = extension.modules.map { module -> IdeaKpmModule(module) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
+23
-23
@@ -10,29 +10,29 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.tooling.provider.model.ToolingModelBuilder
|
import org.gradle.tooling.provider.model.ToolingModelBuilder
|
||||||
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinProjectModelBuilder.*
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmProjectModelBuilder.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
||||||
import org.jetbrains.kotlin.tooling.core.UnsafeApi
|
import org.jetbrains.kotlin.tooling.core.UnsafeApi
|
||||||
|
|
||||||
internal class IdeaKotlinProjectModelBuilderImpl @UnsafeApi("Use factory methods instead") constructor(
|
internal class IdeaKpmProjectModelBuilderImpl @UnsafeApi("Use factory methods instead") constructor(
|
||||||
private val extension: KotlinPm20ProjectExtension,
|
private val extension: KotlinPm20ProjectExtension,
|
||||||
) : ToolingModelBuilder, IdeaKotlinProjectModelBuilder {
|
) : ToolingModelBuilder, IdeaKpmProjectModelBuilder {
|
||||||
|
|
||||||
private data class RegisteredDependencyResolver(
|
private data class RegisteredDependencyResolver(
|
||||||
val resolver: IdeaKotlinDependencyResolver,
|
val resolver: IdeaKpmDependencyResolver,
|
||||||
val constraint: FragmentConstraint,
|
val constraint: FragmentConstraint,
|
||||||
val phase: DependencyResolutionPhase,
|
val phase: DependencyResolutionPhase,
|
||||||
val level: DependencyResolutionLevel,
|
val level: DependencyResolutionLevel,
|
||||||
)
|
)
|
||||||
|
|
||||||
private data class RegisteredDependencyTransformer(
|
private data class RegisteredDependencyTransformer(
|
||||||
val transformer: IdeaKotlinDependencyTransformer,
|
val transformer: IdeaKpmDependencyTransformer,
|
||||||
val constraint: FragmentConstraint,
|
val constraint: FragmentConstraint,
|
||||||
val phase: DependencyTransformationPhase
|
val phase: DependencyTransformationPhase
|
||||||
)
|
)
|
||||||
|
|
||||||
private data class RegisteredDependencyEffect(
|
private data class RegisteredDependencyEffect(
|
||||||
val effect: IdeaKotlinDependencyEffect,
|
val effect: IdeaKpmDependencyEffect,
|
||||||
val constraint: FragmentConstraint,
|
val constraint: FragmentConstraint,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ internal class IdeaKotlinProjectModelBuilderImpl @UnsafeApi("Use factory methods
|
|||||||
private val registeredDependencyEffects = mutableListOf<RegisteredDependencyEffect>()
|
private val registeredDependencyEffects = mutableListOf<RegisteredDependencyEffect>()
|
||||||
|
|
||||||
override fun registerDependencyResolver(
|
override fun registerDependencyResolver(
|
||||||
resolver: IdeaKotlinDependencyResolver,
|
resolver: IdeaKpmDependencyResolver,
|
||||||
constraint: FragmentConstraint,
|
constraint: FragmentConstraint,
|
||||||
phase: DependencyResolutionPhase,
|
phase: DependencyResolutionPhase,
|
||||||
level: DependencyResolutionLevel
|
level: DependencyResolutionLevel
|
||||||
@@ -52,7 +52,7 @@ internal class IdeaKotlinProjectModelBuilderImpl @UnsafeApi("Use factory methods
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun registerDependencyTransformer(
|
override fun registerDependencyTransformer(
|
||||||
transformer: IdeaKotlinDependencyTransformer,
|
transformer: IdeaKpmDependencyTransformer,
|
||||||
constraint: FragmentConstraint,
|
constraint: FragmentConstraint,
|
||||||
phase: DependencyTransformationPhase
|
phase: DependencyTransformationPhase
|
||||||
) {
|
) {
|
||||||
@@ -62,7 +62,7 @@ internal class IdeaKotlinProjectModelBuilderImpl @UnsafeApi("Use factory methods
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun registerDependencyEffect(
|
override fun registerDependencyEffect(
|
||||||
effect: IdeaKotlinDependencyEffect,
|
effect: IdeaKpmDependencyEffect,
|
||||||
constraint: FragmentConstraint
|
constraint: FragmentConstraint
|
||||||
) {
|
) {
|
||||||
registeredDependencyEffects.add(
|
registeredDependencyEffects.add(
|
||||||
@@ -70,8 +70,8 @@ internal class IdeaKotlinProjectModelBuilderImpl @UnsafeApi("Use factory methods
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun buildIdeaKotlinProjectModel(): IdeaKpmProject {
|
override fun buildIdeaKpmProjectModel(): IdeaKpmProject {
|
||||||
return Context().IdeaKotlinProjectModel(extension)
|
return Context().IdeaKpmProject(extension)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun canBuild(modelName: String): Boolean =
|
override fun canBuild(modelName: String): Boolean =
|
||||||
@@ -79,21 +79,21 @@ internal class IdeaKotlinProjectModelBuilderImpl @UnsafeApi("Use factory methods
|
|||||||
|
|
||||||
override fun buildAll(modelName: String, project: Project): IdeaKpmProject {
|
override fun buildAll(modelName: String, project: Project): IdeaKpmProject {
|
||||||
check(project === extension.project) { "Expected project ${extension.project.path}, found ${project.path}" }
|
check(project === extension.project) { "Expected project ${extension.project.path}, found ${project.path}" }
|
||||||
return buildIdeaKotlinProjectModel()
|
return buildIdeaKpmProjectModel()
|
||||||
}
|
}
|
||||||
|
|
||||||
private inner class Context : IdeaKotlinProjectModelBuildingContext {
|
private inner class Context : IdeaKpmProjectModelBuildingContext {
|
||||||
override val dependencyResolver = createDependencyResolver()
|
override val dependencyResolver = createDependencyResolver()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createDependencyResolver(): IdeaKotlinDependencyResolver {
|
private fun createDependencyResolver(): IdeaKpmDependencyResolver {
|
||||||
return IdeaKotlinDependencyResolver(DependencyResolutionPhase.values().map { phase ->
|
return IdeaKpmDependencyResolver(DependencyResolutionPhase.values().map { phase ->
|
||||||
createDependencyResolver(phase)
|
createDependencyResolver(phase)
|
||||||
}).withTransformer(createDependencyTransformer())
|
}).withTransformer(createDependencyTransformer())
|
||||||
.withEffect(createDependencyEffect())
|
.withEffect(createDependencyEffect())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createDependencyResolver(phase: DependencyResolutionPhase) = IdeaKotlinDependencyResolver resolve@{ fragment ->
|
private fun createDependencyResolver(phase: DependencyResolutionPhase) = IdeaKpmDependencyResolver resolve@{ fragment ->
|
||||||
val applicableResolvers = registeredDependencyResolvers
|
val applicableResolvers = registeredDependencyResolvers
|
||||||
.filter { it.phase == phase }
|
.filter { it.phase == phase }
|
||||||
.filter { it.constraint(fragment) }
|
.filter { it.constraint(fragment) }
|
||||||
@@ -103,7 +103,7 @@ internal class IdeaKotlinProjectModelBuilderImpl @UnsafeApi("Use factory methods
|
|||||||
DependencyResolutionLevel.values().reversed().forEach { level ->
|
DependencyResolutionLevel.values().reversed().forEach { level ->
|
||||||
val resolvers = applicableResolvers[level].orEmpty().map { it.resolver }
|
val resolvers = applicableResolvers[level].orEmpty().map { it.resolver }
|
||||||
if (resolvers.isNotEmpty()) {
|
if (resolvers.isNotEmpty()) {
|
||||||
return@resolve IdeaKotlinDependencyResolver(resolvers).resolve(fragment)
|
return@resolve IdeaKpmDependencyResolver(resolvers).resolve(fragment)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,15 +111,15 @@ internal class IdeaKotlinProjectModelBuilderImpl @UnsafeApi("Use factory methods
|
|||||||
emptySet()
|
emptySet()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createDependencyTransformer(): IdeaKotlinDependencyTransformer {
|
private fun createDependencyTransformer(): IdeaKpmDependencyTransformer {
|
||||||
return IdeaKotlinDependencyTransformer(DependencyTransformationPhase.values().map { phase ->
|
return IdeaKpmDependencyTransformer(DependencyTransformationPhase.values().map { phase ->
|
||||||
createDependencyTransformer(phase)
|
createDependencyTransformer(phase)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createDependencyTransformer(phase: DependencyTransformationPhase): IdeaKotlinDependencyTransformer {
|
private fun createDependencyTransformer(phase: DependencyTransformationPhase): IdeaKpmDependencyTransformer {
|
||||||
return IdeaKotlinDependencyTransformer { fragment, dependencies ->
|
return IdeaKpmDependencyTransformer { fragment, dependencies ->
|
||||||
IdeaKotlinDependencyTransformer(
|
IdeaKpmDependencyTransformer(
|
||||||
registeredDependencyTransformers
|
registeredDependencyTransformers
|
||||||
.filter { it.phase == phase }
|
.filter { it.phase == phase }
|
||||||
.filter { it.constraint(fragment) }
|
.filter { it.constraint(fragment) }
|
||||||
@@ -128,7 +128,7 @@ internal class IdeaKotlinProjectModelBuilderImpl @UnsafeApi("Use factory methods
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createDependencyEffect(): IdeaKotlinDependencyEffect = IdeaKotlinDependencyEffect { fragment, dependencies ->
|
private fun createDependencyEffect(): IdeaKpmDependencyEffect = IdeaKpmDependencyEffect { fragment, dependencies ->
|
||||||
registeredDependencyEffects
|
registeredDependencyEffects
|
||||||
.filter { it.constraint(fragment) }
|
.filter { it.constraint(fragment) }
|
||||||
.forEach { it.effect(fragment, dependencies) }
|
.forEach { it.effect(fragment, dependencies) }
|
||||||
+2
-2
@@ -7,14 +7,14 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
||||||
|
|
||||||
internal object IdeaKotlinRefinesDependencyResolver : IdeaKotlinDependencyResolver {
|
internal object IdeaKpmRefinesDependencyResolver : IdeaKpmDependencyResolver {
|
||||||
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> = fragment.refinesClosure
|
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> = fragment.refinesClosure
|
||||||
.map { refinesDependencyFragment -> createRefinesDependency(refinesDependencyFragment) }.toSet()
|
.map { refinesDependencyFragment -> createRefinesDependency(refinesDependencyFragment) }.toSet()
|
||||||
|
|
||||||
private fun createRefinesDependency(fragment: GradleKpmFragment): IdeaKpmDependency {
|
private fun createRefinesDependency(fragment: GradleKpmFragment): IdeaKpmDependency {
|
||||||
return IdeaKpmFragmentDependencyImpl(
|
return IdeaKpmFragmentDependencyImpl(
|
||||||
type = IdeaKpmFragmentDependency.Type.Refines,
|
type = IdeaKpmFragmentDependency.Type.Refines,
|
||||||
coordinates = IdeaKotlinFragmentCoordinates(fragment)
|
coordinates = IdeaKpmFragmentCoordinates(fragment)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.containingVariants
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.containingVariants
|
||||||
|
|
||||||
internal object IdeaKotlinSinglePlatformStdlibCommonFilter : IdeaKotlinDependencyTransformer {
|
internal object IdeaKpmSinglePlatformStdlibCommonFilter : IdeaKpmDependencyTransformer {
|
||||||
private const val stdlibCoordinatesGroup = "org.jetbrains.kotlin"
|
private const val stdlibCoordinatesGroup = "org.jetbrains.kotlin"
|
||||||
private val stdlibCoordinatesModules = setOf("kotlin-stdlib-common", "kotlin-test-common", "kotlin-test-annotations-common")
|
private val stdlibCoordinatesModules = setOf("kotlin-stdlib-common", "kotlin-test-common", "kotlin-test-annotations-common")
|
||||||
|
|
||||||
+1
-1
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmVariant
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmVariant
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.resolvableMetadataConfigurationName
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.resolvableMetadataConfigurationName
|
||||||
|
|
||||||
internal class IdeaKotlinSourcesAndDocumentationResolver : IdeaKotlinDependencyResolver {
|
internal class IdeaKpmSourcesAndDocumentationResolver : IdeaKpmDependencyResolver {
|
||||||
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
|
||||||
if (fragment is GradleKpmVariant) {
|
if (fragment is GradleKpmVariant) {
|
||||||
return resolve(fragment.project, fragment.compileDependenciesConfiguration)
|
return resolve(fragment.project, fragment.compileDependenciesConfiguration)
|
||||||
+1
-1
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
||||||
|
|
||||||
internal object IdeaKotlinUnusedSourcesAndDocumentationFilter : IdeaKotlinDependencyTransformer {
|
internal object IdeaKpmUnusedSourcesAndDocumentationFilter : IdeaKpmDependencyTransformer {
|
||||||
override fun transform(
|
override fun transform(
|
||||||
fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>
|
fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>
|
||||||
): Set<IdeaKpmDependency> {
|
): Set<IdeaKpmDependency> {
|
||||||
+1
-1
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationOutput
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationOutput
|
||||||
|
|
||||||
internal fun IdeaKotlinCompilationOutput(compilation: KotlinCompilationOutput): IdeaKpmCompilationOutput {
|
internal fun IdeaKpmCompilationOutput(compilation: KotlinCompilationOutput): IdeaKpmCompilationOutput {
|
||||||
return IdeaKpmCompilationOutputImpl(
|
return IdeaKpmCompilationOutputImpl(
|
||||||
classesDirs = compilation.classesDirs.toSet(),
|
classesDirs = compilation.classesDirs.toSet(),
|
||||||
resourcesDir = compilation.resourcesDir
|
resourcesDir = compilation.resourcesDir
|
||||||
+11
-11
@@ -8,16 +8,16 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
||||||
import org.jetbrains.kotlin.tooling.core.emptyExtras
|
import org.jetbrains.kotlin.tooling.core.emptyExtras
|
||||||
|
|
||||||
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinFragment(fragment: GradleKpmFragment): IdeaKpmFragment {
|
internal fun IdeaKpmProjectModelBuildingContext.IdeaKpmFragment(fragment: GradleKpmFragment): IdeaKpmFragment {
|
||||||
return if (fragment is GradleKpmVariant) buildIdeaKotlinVariant(fragment)
|
return if (fragment is GradleKpmVariant) buildIdeaKpmVariant(fragment)
|
||||||
else buildIdeaKotlinFragment(fragment)
|
else buildIdeaKpmFragment(fragment)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinFragment(fragment: GradleKpmFragment): IdeaKpmFragment {
|
private fun IdeaKpmProjectModelBuildingContext.buildIdeaKpmFragment(fragment: GradleKpmFragment): IdeaKpmFragment {
|
||||||
return IdeaKpmFragmentImpl(
|
return IdeaKpmFragmentImpl(
|
||||||
coordinates = IdeaKotlinFragmentCoordinates(fragment),
|
coordinates = IdeaKpmFragmentCoordinates(fragment),
|
||||||
platforms = fragment.containingVariants.map { variant -> IdeaKotlinPlatform(variant) }.toSet(),
|
platforms = fragment.containingVariants.map { variant -> IdeaKpmPlatform(variant) }.toSet(),
|
||||||
languageSettings = IdeaKotlinLanguageSettings(fragment.languageSettings),
|
languageSettings = IdeaKpmLanguageSettings(fragment.languageSettings),
|
||||||
dependencies = dependencyResolver.resolve(fragment).toList(),
|
dependencies = dependencyResolver.resolve(fragment).toList(),
|
||||||
sourceDirectories = fragment.kotlinSourceRoots.sourceDirectories.files.toList().map { file -> IdeaKpmSourceDirectoryImpl(file) },
|
sourceDirectories = fragment.kotlinSourceRoots.sourceDirectories.files.toList().map { file -> IdeaKpmSourceDirectoryImpl(file) },
|
||||||
resourceDirectories = emptyList(), // TODO
|
resourceDirectories = emptyList(), // TODO
|
||||||
@@ -25,11 +25,11 @@ private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinFragment(fragme
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinVariant(variant: GradleKpmVariant): IdeaKpmVariant {
|
private fun IdeaKpmProjectModelBuildingContext.buildIdeaKpmVariant(variant: GradleKpmVariant): IdeaKpmVariant {
|
||||||
return IdeaKpmVariantImpl(
|
return IdeaKpmVariantImpl(
|
||||||
fragment = buildIdeaKotlinFragment(variant),
|
fragment = buildIdeaKpmFragment(variant),
|
||||||
platform = IdeaKotlinPlatform(variant),
|
platform = IdeaKpmPlatform(variant),
|
||||||
variantAttributes = variant.variantAttributes.mapKeys { (key, _) -> key.uniqueName },
|
variantAttributes = variant.variantAttributes.mapKeys { (key, _) -> key.uniqueName },
|
||||||
compilationOutputs = IdeaKotlinCompilationOutput(variant.compilationOutputs)
|
compilationOutputs = IdeaKpmCompilationOutput(variant.compilationOutputs)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
+2
-2
@@ -7,9 +7,9 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
|
||||||
|
|
||||||
internal fun IdeaKotlinFragmentCoordinates(fragment: GradleKpmFragment): IdeaKpmFragmentCoordinates {
|
internal fun IdeaKpmFragmentCoordinates(fragment: GradleKpmFragment): IdeaKpmFragmentCoordinates {
|
||||||
return IdeaKpmFragmentCoordinatesImpl(
|
return IdeaKpmFragmentCoordinatesImpl(
|
||||||
module = IdeaKotlinModuleCoordinates(fragment.containingModule),
|
module = IdeaKpmModuleCoordinates(fragment.containingModule),
|
||||||
fragmentName = fragment.name
|
fragmentName = fragment.name
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultLanguageSettingsBuilder
|
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultLanguageSettingsBuilder
|
||||||
import org.jetbrains.kotlin.project.model.LanguageSettings
|
import org.jetbrains.kotlin.project.model.LanguageSettings
|
||||||
|
|
||||||
internal fun IdeaKotlinLanguageSettings(languageSettings: LanguageSettings): IdeaKpmLanguageSettings {
|
internal fun IdeaKpmLanguageSettings(languageSettings: LanguageSettings): IdeaKpmLanguageSettings {
|
||||||
return IdeaKpmLanguageSettingsImpl(
|
return IdeaKpmLanguageSettingsImpl(
|
||||||
languageVersion = languageSettings.languageVersion,
|
languageVersion = languageSettings.languageVersion,
|
||||||
apiVersion = languageSettings.apiVersion,
|
apiVersion = languageSettings.apiVersion,
|
||||||
+3
-3
@@ -7,9 +7,9 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule
|
||||||
|
|
||||||
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinModule(module: GradleKpmModule): IdeaKpmModule {
|
internal fun IdeaKpmProjectModelBuildingContext.IdeaKpmModule(module: GradleKpmModule): IdeaKpmModule {
|
||||||
return IdeaKpmModuleImpl(
|
return IdeaKpmModuleImpl(
|
||||||
coordinates = IdeaKotlinModuleCoordinates(module),
|
coordinates = IdeaKpmModuleCoordinates(module),
|
||||||
fragments = module.fragments.toList().map { fragment -> IdeaKotlinFragment(fragment) }
|
fragments = module.fragments.toList().map { fragment -> IdeaKpmFragment(fragment) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.currentBuildId
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.currentBuildId
|
||||||
|
|
||||||
internal fun IdeaKotlinModuleCoordinates(module: GradleKpmModule): IdeaKpmModuleCoordinates {
|
internal fun IdeaKpmModuleCoordinates(module: GradleKpmModule): IdeaKpmModuleCoordinates {
|
||||||
return IdeaKpmModuleCoordinatesImpl(
|
return IdeaKpmModuleCoordinatesImpl(
|
||||||
buildId = module.project.currentBuildId().name,
|
buildId = module.project.currentBuildId().name,
|
||||||
projectPath = module.project.path,
|
projectPath = module.project.path,
|
||||||
+2
-2
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.konan.target.HostManager
|
|||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
/* Receiver acts as scope, or key to that function */
|
/* Receiver acts as scope, or key to that function */
|
||||||
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinPlatform(variant: GradleKpmVariant): IdeaKpmPlatform {
|
internal fun IdeaKpmProjectModelBuildingContext.IdeaKpmPlatform(variant: GradleKpmVariant): IdeaKpmPlatform {
|
||||||
when (variant) {
|
when (variant) {
|
||||||
is GradleKpmJvmVariant -> return IdeaKpmPlatform.jvm(variant.compilationData.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name)
|
is GradleKpmJvmVariant -> return IdeaKpmPlatform.jvm(variant.compilationData.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name)
|
||||||
is GradleKpmNativeVariantInternal -> return IdeaKpmPlatform.native(variant.konanTarget.name)
|
is GradleKpmNativeVariantInternal -> return IdeaKpmPlatform.native(variant.konanTarget.name)
|
||||||
@@ -29,7 +29,7 @@ internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinPlatform(variant: G
|
|||||||
|
|
||||||
/* Fallback calculation based on 'platformType' alone */
|
/* Fallback calculation based on 'platformType' alone */
|
||||||
/* This is a last line of defence, not expected to be actually executed */
|
/* This is a last line of defence, not expected to be actually executed */
|
||||||
assert(false) { "Unable to build 'IdeaKotlinPlatform' from variant ${variant.path}" }
|
assert(false) { "Unable to build 'IdeaKpmPlatform' from variant ${variant.path}" }
|
||||||
return when (variant.platformType) {
|
return when (variant.platformType) {
|
||||||
KotlinPlatformType.common -> throw IllegalArgumentException("Unexpected platformType 'common' for variant ${variant.name}")
|
KotlinPlatformType.common -> throw IllegalArgumentException("Unexpected platformType 'common' for variant ${variant.name}")
|
||||||
KotlinPlatformType.jvm -> IdeaKpmPlatform.jvm(JvmTarget.DEFAULT.name)
|
KotlinPlatformType.jvm -> IdeaKpmPlatform.jvm(JvmTarget.DEFAULT.name)
|
||||||
+5
-5
@@ -18,9 +18,9 @@ import org.gradle.util.GradleVersion
|
|||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension
|
import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension
|
||||||
import org.jetbrains.kotlin.gradle.dsl.pm20Extension
|
import org.jetbrains.kotlin.gradle.dsl.pm20Extension
|
||||||
import org.jetbrains.kotlin.gradle.internal.customizeKotlinDependencies
|
import org.jetbrains.kotlin.gradle.internal.customizeKotlinDependencies
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinProjectModelBuilder
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmProjectModelBuilder
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.default
|
import org.jetbrains.kotlin.gradle.kpm.idea.default
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.locateOrRegisterBuildIdeaKotlinProjectModelTask
|
import org.jetbrains.kotlin.gradle.kpm.idea.locateOrRegisterIdeaKpmBuildProjectModelTask
|
||||||
import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
|
import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -82,8 +82,8 @@ abstract class KotlinPm20GradlePlugin @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun setupToolingModelBuilder(project: Project) {
|
private fun setupToolingModelBuilder(project: Project) {
|
||||||
toolingModelBuilderRegistry.register(project.pm20Extension.ideaKotlinProjectModelBuilder)
|
toolingModelBuilderRegistry.register(project.pm20Extension.ideaKpmProjectModelBuilder)
|
||||||
project.locateOrRegisterBuildIdeaKotlinProjectModelTask()
|
project.locateOrRegisterIdeaKpmBuildProjectModelTask()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ open class KotlinPm20ProjectExtension(project: Project) : KotlinTopLevelExtensio
|
|||||||
|
|
||||||
internal val kpmModelContainer = GradleKpmDefaultProjectModelContainer.create(project)
|
internal val kpmModelContainer = GradleKpmDefaultProjectModelContainer.create(project)
|
||||||
|
|
||||||
internal val ideaKotlinProjectModelBuilder by lazy { IdeaKotlinProjectModelBuilder.default(this) }
|
internal val ideaKpmProjectModelBuilder by lazy { IdeaKpmProjectModelBuilder.default(this) }
|
||||||
|
|
||||||
val modules: NamedDomainObjectContainer<GradleKpmModule>
|
val modules: NamedDomainObjectContainer<GradleKpmModule>
|
||||||
get() = project.kpmModules
|
get() = project.kpmModules
|
||||||
|
|||||||
+2
-2
@@ -27,6 +27,6 @@ fun Project.applyKpmPlugin(configure: KotlinPm20ProjectExtension.() -> Unit = {}
|
|||||||
return (extensions.getByName("kotlin") as KotlinPm20ProjectExtension).also(configure)
|
return (extensions.getByName("kotlin") as KotlinPm20ProjectExtension).also(configure)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun KotlinPm20ProjectExtension.buildIdeaKotlinProjectModel(): IdeaKpmProject {
|
fun KotlinPm20ProjectExtension.buildIdeaKpmProjectModel(): IdeaKpmProject {
|
||||||
return ideaKotlinProjectModelBuilder.buildIdeaKotlinProjectModel()
|
return ideaKpmProjectModelBuilder.buildIdeaKpmProjectModel()
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -9,7 +9,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
|
|
||||||
import org.gradle.kotlin.dsl.create
|
import org.gradle.kotlin.dsl.create
|
||||||
import org.jetbrains.kotlin.gradle.kpm.AbstractKpmExtensionTest
|
import org.jetbrains.kotlin.gradle.kpm.AbstractKpmExtensionTest
|
||||||
import org.jetbrains.kotlin.gradle.kpm.buildIdeaKotlinProjectModel
|
import org.jetbrains.kotlin.gradle.kpm.buildIdeaKpmProjectModel
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.deserialize
|
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.deserialize
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.serialize
|
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.serialize
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmIosX64Variant
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmIosX64Variant
|
||||||
@@ -19,13 +19,13 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.jvm
|
|||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
class IdeaKotlinProjectModelSerializableTest : AbstractKpmExtensionTest() {
|
class IdeaKpmProjectModelSerializableTest : AbstractKpmExtensionTest() {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `test - serialize and deserialize - empty project`() {
|
fun `test - serialize and deserialize - empty project`() {
|
||||||
project.evaluate()
|
project.evaluate()
|
||||||
project.repositories.mavenLocal()
|
project.repositories.mavenLocal()
|
||||||
assertSerializeAndDeserializeEquals(kotlin.buildIdeaKotlinProjectModel())
|
assertSerializeAndDeserializeEquals(kotlin.buildIdeaKpmProjectModel())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -48,7 +48,7 @@ class IdeaKotlinProjectModelSerializableTest : AbstractKpmExtensionTest() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
project.evaluate()
|
project.evaluate()
|
||||||
assertSerializeAndDeserializeEquals(kotlin.buildIdeaKotlinProjectModel())
|
assertSerializeAndDeserializeEquals(kotlin.buildIdeaKpmProjectModel())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun assertSerializeAndDeserializeEquals(model: IdeaKpmProject) {
|
private fun assertSerializeAndDeserializeEquals(model: IdeaKpmProject) {
|
||||||
+3
-3
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.commonizer.stdlib
|
|||||||
import org.jetbrains.kotlin.gradle.android.androidPrototype
|
import org.jetbrains.kotlin.gradle.android.androidPrototype
|
||||||
import org.jetbrains.kotlin.gradle.assumeAndroidSdkAvailable
|
import org.jetbrains.kotlin.gradle.assumeAndroidSdkAvailable
|
||||||
import org.jetbrains.kotlin.gradle.kpm.applyKpmPlugin
|
import org.jetbrains.kotlin.gradle.kpm.applyKpmPlugin
|
||||||
import org.jetbrains.kotlin.gradle.kpm.buildIdeaKotlinProjectModel
|
import org.jetbrains.kotlin.gradle.kpm.buildIdeaKpmProjectModel
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency.Companion.CLASSPATH_BINARY_TYPE
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency.Companion.CLASSPATH_BINARY_TYPE
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertContainsFragment
|
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertContainsFragment
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertContainsModule
|
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertContainsModule
|
||||||
@@ -51,7 +51,7 @@ class MviKotlinIdeaDependencyResolutionTest : AbstractLightweightIdeaDependencyR
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin.buildIdeaKotlinProjectModel().assertIsNotEmpty().modules.forEach { module ->
|
kotlin.buildIdeaKpmProjectModel().assertIsNotEmpty().modules.forEach { module ->
|
||||||
module.assertContainsFragment("common").assertResolvedBinaryDependencies(
|
module.assertContainsFragment("common").assertResolvedBinaryDependencies(
|
||||||
CLASSPATH_BINARY_TYPE,
|
CLASSPATH_BINARY_TYPE,
|
||||||
"com.arkivanov.mvikotlin:mvikotlin:3.0.0-beta01:main:commonMain",
|
"com.arkivanov.mvikotlin:mvikotlin:3.0.0-beta01:main:commonMain",
|
||||||
@@ -197,7 +197,7 @@ class MviKotlinIdeaDependencyResolutionTest : AbstractLightweightIdeaDependencyR
|
|||||||
/* Android requires project to evaluate */
|
/* Android requires project to evaluate */
|
||||||
project.evaluate()
|
project.evaluate()
|
||||||
|
|
||||||
kotlin.buildIdeaKotlinProjectModel().assertIsNotEmpty().assertContainsModule("main").let { module ->
|
kotlin.buildIdeaKpmProjectModel().assertIsNotEmpty().assertContainsModule("main").let { module ->
|
||||||
listOf("common", "jvm").forEach { fragmentName ->
|
listOf("common", "jvm").forEach { fragmentName ->
|
||||||
module.assertContainsFragment(fragmentName).assertResolvedBinaryDependencies(
|
module.assertContainsFragment(fragmentName).assertResolvedBinaryDependencies(
|
||||||
CLASSPATH_BINARY_TYPE,
|
CLASSPATH_BINARY_TYPE,
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@
|
|||||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.kpm.applyKpmPlugin
|
import org.jetbrains.kotlin.gradle.kpm.applyKpmPlugin
|
||||||
import org.jetbrains.kotlin.gradle.kpm.buildIdeaKotlinProjectModel
|
import org.jetbrains.kotlin.gradle.kpm.buildIdeaKpmProjectModel
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertContainsFragment
|
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertContainsFragment
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertIsNotEmpty
|
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertIsNotEmpty
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertFragmentDependencies
|
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertFragmentDependencies
|
||||||
@@ -78,7 +78,7 @@ class SimpleProjectToProjectDependencyResolutionTest : AbstractLightweightIdeaDe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
consumerKotlin.buildIdeaKotlinProjectModel().assertIsNotEmpty().modules.forEach { module ->
|
consumerKotlin.buildIdeaKpmProjectModel().assertIsNotEmpty().modules.forEach { module ->
|
||||||
fun ifTestModule(vararg any: Any?) =
|
fun ifTestModule(vararg any: Any?) =
|
||||||
listOf(*any).takeIf { module.name == GradleKpmModule.TEST_MODULE_NAME }
|
listOf(*any).takeIf { module.name == GradleKpmModule.TEST_MODULE_NAME }
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -9,7 +9,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.enableDefaultStdlibDependency
|
import org.jetbrains.kotlin.gradle.enableDefaultStdlibDependency
|
||||||
import org.jetbrains.kotlin.gradle.kpm.applyKpmPlugin
|
import org.jetbrains.kotlin.gradle.kpm.applyKpmPlugin
|
||||||
import org.jetbrains.kotlin.gradle.kpm.buildIdeaKotlinProjectModel
|
import org.jetbrains.kotlin.gradle.kpm.buildIdeaKpmProjectModel
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency.Companion.CLASSPATH_BINARY_TYPE
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency.Companion.CLASSPATH_BINARY_TYPE
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.IdeaKpmBinaryDependencyMatcher
|
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.IdeaKpmBinaryDependencyMatcher
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertContainsFragment
|
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertContainsFragment
|
||||||
@@ -44,7 +44,7 @@ class StdlibKotlinIdeaDependencyResolutionTest : AbstractLightweightIdeaDependen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin.buildIdeaKotlinProjectModel().assertIsNotEmpty().modules.forEach { module ->
|
kotlin.buildIdeaKpmProjectModel().assertIsNotEmpty().modules.forEach { module ->
|
||||||
module.assertContainsFragment("common").assertResolvedBinaryDependencies(
|
module.assertContainsFragment("common").assertResolvedBinaryDependencies(
|
||||||
CLASSPATH_BINARY_TYPE,
|
CLASSPATH_BINARY_TYPE,
|
||||||
"org.jetbrains.kotlin:kotlin-stdlib-common:1.6.10"
|
"org.jetbrains.kotlin:kotlin-stdlib-common:1.6.10"
|
||||||
@@ -88,7 +88,7 @@ class StdlibKotlinIdeaDependencyResolutionTest : AbstractLightweightIdeaDependen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin.buildIdeaKotlinProjectModel().assertIsNotEmpty().modules.forEach { module ->
|
kotlin.buildIdeaKpmProjectModel().assertIsNotEmpty().modules.forEach { module ->
|
||||||
module.assertContainsFragment("common").assertResolvedBinaryDependencies(
|
module.assertContainsFragment("common").assertResolvedBinaryDependencies(
|
||||||
CLASSPATH_BINARY_TYPE,
|
CLASSPATH_BINARY_TYPE,
|
||||||
"org.jetbrains.kotlin:kotlin-stdlib-common:1.6.10",
|
"org.jetbrains.kotlin:kotlin-stdlib-common:1.6.10",
|
||||||
@@ -140,7 +140,7 @@ class StdlibKotlinIdeaDependencyResolutionTest : AbstractLightweightIdeaDependen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin.buildIdeaKotlinProjectModel().assertIsNotEmpty().modules.forEach { module ->
|
kotlin.buildIdeaKpmProjectModel().assertIsNotEmpty().modules.forEach { module ->
|
||||||
module.assertContainsFragment("common").assertResolvedBinaryDependencies(
|
module.assertContainsFragment("common").assertResolvedBinaryDependencies(
|
||||||
CLASSPATH_BINARY_TYPE,
|
CLASSPATH_BINARY_TYPE,
|
||||||
"org.jetbrains.kotlin:kotlin-stdlib-common:${project.getKotlinPluginVersion()}"
|
"org.jetbrains.kotlin:kotlin-stdlib-common:${project.getKotlinPluginVersion()}"
|
||||||
|
|||||||
Reference in New Issue
Block a user