summaryrefslogtreecommitdiff
path: root/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/configuration/multiplatform/ModuleDataInitializer.kt
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/configuration/multiplatform/ModuleDataInitializer.kt')
-rw-r--r--plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/configuration/multiplatform/ModuleDataInitializer.kt45
1 files changed, 45 insertions, 0 deletions
diff --git a/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/configuration/multiplatform/ModuleDataInitializer.kt b/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/configuration/multiplatform/ModuleDataInitializer.kt
new file mode 100644
index 000000000000..1ec6a659afc5
--- /dev/null
+++ b/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/configuration/multiplatform/ModuleDataInitializer.kt
@@ -0,0 +1,45 @@
+// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+package org.jetbrains.kotlin.idea.configuration.multiplatform
+
+import com.intellij.openapi.externalSystem.model.DataNode
+import com.intellij.openapi.externalSystem.model.project.ModuleData
+import com.intellij.openapi.externalSystem.model.project.ProjectData
+import org.gradle.tooling.model.idea.IdeaModule
+import org.jetbrains.kotlin.config.ExternalSystemRunTask
+import org.jetbrains.plugins.gradle.service.project.ProjectResolverContext
+
+interface ModuleDataInitializer {
+ fun doInitialize(
+ gradleModule: IdeaModule,
+ mainModuleNode: DataNode<ModuleData>,
+ projectDataNode: DataNode<ProjectData>,
+ resolverCtx: ProjectResolverContext
+ )
+}
+
+interface ComposableInitializeModuleDataAction : ModuleDataInitializer {
+ private fun composeWith(lazyAfter: () -> ModuleDataInitializer): ComposableInitializeModuleDataAction =
+ object : ComposableInitializeModuleDataAction {
+ override fun doInitialize(
+ gradleModule: IdeaModule,
+ mainModuleNode: DataNode<ModuleData>,
+ projectDataNode: DataNode<ProjectData>,
+ resolverCtx: ProjectResolverContext
+ ) {
+ this@ComposableInitializeModuleDataAction.doInitialize(gradleModule, mainModuleNode, projectDataNode, resolverCtx)
+ lazyAfter().doInitialize(gradleModule, mainModuleNode, projectDataNode, resolverCtx)
+ }
+ }
+
+ operator fun plus(next: ComposableInitializeModuleDataAction): ComposableInitializeModuleDataAction = composeWith { next }
+}
+
+class InitializeModuleDataContext<TSourceSet>(
+ internal var jdkName: String? = null,
+ internal var moduleGroup: Array<String>? = null,
+) {
+ internal lateinit var mainModuleData: ModuleData
+ internal lateinit var mainModuleConfigPath: String
+ internal lateinit var mainModuleFileDirectoryPath: String
+ internal lateinit var sourceSetToRunTasks: Map<TSourceSet, Collection<ExternalSystemRunTask>>
+}