[KPM] Implement initial kpm/idea dependency resolution

^KT-51386 Verification Pending
This commit is contained in:
sebastian.sellmair
2022-03-07 11:12:22 +01:00
committed by Space
parent 8b84ed4978
commit 1a5fc84080
61 changed files with 2278 additions and 120 deletions
@@ -6,6 +6,6 @@ plugins {
dependencies {
api(project(":native:kotlin-native-utils"))
api(project(":kotlin-project-model"))
implementation(project(":kotlin-tooling-core"))
compileOnly("com.android.tools.build:gradle:3.4.0")
}
}
@@ -13,7 +13,9 @@ import org.gradle.api.file.SourceDirectorySet
import org.jetbrains.kotlin.gradle.plugin.HasKotlinDependencies
import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder
import org.jetbrains.kotlin.project.model.KotlinModuleFragment
import org.jetbrains.kotlin.project.model.withRefinesClosure
import org.jetbrains.kotlin.project.model.utils.variantsContainingFragment
import org.jetbrains.kotlin.tooling.core.closure
import org.jetbrains.kotlin.tooling.core.withClosure
interface KotlinGradleFragment : KotlinModuleFragment, HasKotlinDependencies, KotlinFragmentDependencyConfigurations, Named {
override val kotlinSourceRoots: SourceDirectorySet
@@ -58,5 +60,14 @@ interface KotlinGradleFragment : KotlinModuleFragment, HasKotlinDependencies, Ko
listOf(transitiveApiConfiguration.name, transitiveImplementationConfiguration.name)
}
val KotlinGradleFragment.withRefinesClosure: Set<KotlinGradleFragment>
get() = this.withClosure { it.directRefinesDependencies }
val KotlinGradleFragment.refinesClosure: Set<KotlinGradleFragment>
get() = (this as KotlinModuleFragment).withRefinesClosure.mapTo(mutableSetOf()) { it as KotlinGradleFragment }
get() = this.closure { it.directRefinesDependencies }
val KotlinGradleFragment.path: String
get() = "${project.path}/${containingModule.name}/$fragmentName"
val KotlinGradleFragment.containingVariants: Set<KotlinGradleVariant>
get() = containingModule.variantsContainingFragment(this).map { it as KotlinGradleVariant }.toSet()