[Gradle] Decouple ProjectMppDependency[PSM]Extractor from Gradle Project

^KT-49933
This commit is contained in:
Anton Lakotka
2023-01-12 10:03:40 +01:00
committed by Space Team
parent 6b2111c2a5
commit ceefc4f1ee
3 changed files with 19 additions and 11 deletions
@@ -255,7 +255,7 @@ internal class GranularMetadataTransformation(
val metadataProvider = when (mppDependencyMetadataExtractor) {
is ProjectMppDependencyProjectStructureMetadataExtractor -> ProjectMetadataProvider(
dependencyProject = mppDependencyMetadataExtractor.dependencyProject,
dependencyProject = project.project(mppDependencyMetadataExtractor.projectPath),
moduleIdentifier = mppDependencyMetadataExtractor.moduleIdentifier
)
@@ -27,18 +27,26 @@ sealed class MppDependencyProjectStructureMetadataExtractor {
internal class ProjectMppDependencyProjectStructureMetadataExtractor(
val moduleIdentifier: KpmModuleIdentifier,
val dependencyProject: Project
val projectPath: String,
private val projectStructureMetadataProvider: () -> KotlinProjectStructureMetadata?
) : MppDependencyProjectStructureMetadataExtractor() {
override fun getProjectStructureMetadata(): KotlinProjectStructureMetadata? {
return when {
dependencyProject.topLevelExtensionOrNull == null -> null
dependencyProject.pm20ExtensionOrNull != null -> buildProjectStructureMetadata(
dependencyProject.pm20Extension.modules.single { it.moduleIdentifier == moduleIdentifier }
)
constructor(
moduleIdentifier: KpmModuleIdentifier,
dependencyProject: Project
): this(moduleIdentifier, dependencyProject.path, { dependencyProject.getProjectStructureMetadata(moduleIdentifier) })
else -> dependencyProject.multiplatformExtensionOrNull?.kotlinProjectStructureMetadata
}
override fun getProjectStructureMetadata(): KotlinProjectStructureMetadata? = projectStructureMetadataProvider()
}
private fun Project.getProjectStructureMetadata(moduleIdentifier: KpmModuleIdentifier): KotlinProjectStructureMetadata? {
return when {
topLevelExtensionOrNull == null -> null
pm20ExtensionOrNull != null -> buildProjectStructureMetadata(
pm20Extension.modules.single { it.moduleIdentifier == moduleIdentifier }
)
else -> multiplatformExtensionOrNull?.kotlinProjectStructureMetadata
}
}
@@ -104,7 +104,7 @@ internal class GradleKpmFragmentGranularMetadataResolver(
val metadataProvider = when (projectStructureMetadataExtractor) {
is ProjectMppDependencyProjectStructureMetadataExtractor -> ProjectMetadataProvider(
dependencyProject = projectStructureMetadataExtractor.dependencyProject,
dependencyProject = project.project(projectStructureMetadataExtractor.projectPath),
moduleIdentifier = projectStructureMetadataExtractor.moduleIdentifier
)