[Gradle] Implement IdeDependencyLogger KT-54977
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyLogger.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyLogger.kt new file mode 100644 index 0000000..246d73e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyLogger.kt
@@ -0,0 +1,27 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.plugin.ide + +import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency +import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet +import org.jetbrains.kotlin.gradle.plugin.sources.project + +internal object IdeDependencyLogger : IdeDependencyEffect { + + private const val propertyKey = "IdeDependencyLogger.log" + + override fun invoke(sourceSet: KotlinSourceSet, dependencies: Set<IdeaKotlinDependency>) { + val log = sourceSet.project.properties[propertyKey]?.toString() ?: return + val coordinates = IdeaKotlinSourceCoordinates(sourceSet) + if (log.isEmpty() || Regex(log).matches(coordinates.toString())) { + IdeMultiplatformImport.logger.quiet( + "\n$coordinates resolved:\n" + dependencies.mapNotNull { it.coordinates } + .joinToString("\n") { it.toString().prependIndent(" ") } + + "\n" + ) + } + } +}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt index 54d69d3..fcd9634 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt
@@ -96,6 +96,11 @@ level = IdeMultiplatformImport.DependencyResolutionLevel.Overwrite ) + registerDependencyEffect( + effect = IdeDependencyLogger, + constraint = SourceSetConstraint.unconstrained + ) + registerExtrasSerializationExtension { register(kotlinDebugKey, IdeaKotlinExtrasSerializer.javaIoSerializable()) }