[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) { val metadataProvider = when (mppDependencyMetadataExtractor) {
is ProjectMppDependencyProjectStructureMetadataExtractor -> ProjectMetadataProvider( is ProjectMppDependencyProjectStructureMetadataExtractor -> ProjectMetadataProvider(
dependencyProject = mppDependencyMetadataExtractor.dependencyProject, dependencyProject = project.project(mppDependencyMetadataExtractor.projectPath),
moduleIdentifier = mppDependencyMetadataExtractor.moduleIdentifier moduleIdentifier = mppDependencyMetadataExtractor.moduleIdentifier
) )
@@ -27,18 +27,26 @@ sealed class MppDependencyProjectStructureMetadataExtractor {
internal class ProjectMppDependencyProjectStructureMetadataExtractor( internal class ProjectMppDependencyProjectStructureMetadataExtractor(
val moduleIdentifier: KpmModuleIdentifier, val moduleIdentifier: KpmModuleIdentifier,
val dependencyProject: Project val projectPath: String,
private val projectStructureMetadataProvider: () -> KotlinProjectStructureMetadata?
) : MppDependencyProjectStructureMetadataExtractor() { ) : MppDependencyProjectStructureMetadataExtractor() {
override fun getProjectStructureMetadata(): KotlinProjectStructureMetadata? { constructor(
return when { moduleIdentifier: KpmModuleIdentifier,
dependencyProject.topLevelExtensionOrNull == null -> null dependencyProject: Project
dependencyProject.pm20ExtensionOrNull != null -> buildProjectStructureMetadata( ): this(moduleIdentifier, dependencyProject.path, { dependencyProject.getProjectStructureMetadata(moduleIdentifier) })
dependencyProject.pm20Extension.modules.single { it.moduleIdentifier == 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) { val metadataProvider = when (projectStructureMetadataExtractor) {
is ProjectMppDependencyProjectStructureMetadataExtractor -> ProjectMetadataProvider( is ProjectMppDependencyProjectStructureMetadataExtractor -> ProjectMetadataProvider(
dependencyProject = projectStructureMetadataExtractor.dependencyProject, dependencyProject = project.project(projectStructureMetadataExtractor.projectPath),
moduleIdentifier = projectStructureMetadataExtractor.moduleIdentifier moduleIdentifier = projectStructureMetadataExtractor.moduleIdentifier
) )