[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())
         }