diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt index 0ff0fa68361..cc2695e9500 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt @@ -5,19 +5,24 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.service +import com.intellij.execution.executors.DefaultRunExecutor import com.intellij.openapi.actionSystem.ActionPlaces import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.CommonDataKeys import com.intellij.openapi.actionSystem.impl.SimpleDataContext +import com.intellij.openapi.externalSystem.model.execution.ExternalSystemTaskExecutionSettings +import com.intellij.openapi.externalSystem.util.ExternalSystemUtil import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.LocalFileSystem import org.jetbrains.kotlin.tools.projectWizard.core.TaskResult +import org.jetbrains.kotlin.tools.projectWizard.core.andThen import org.jetbrains.kotlin.tools.projectWizard.core.safe import org.jetbrains.kotlin.tools.projectWizard.core.service.ProjectImportingWizardService import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.ModuleIR import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle import org.jetbrains.plugins.gradle.action.ImportProjectFromScriptAction +import org.jetbrains.plugins.gradle.util.GradleConstants import java.nio.file.Path class IdeaGradleWizardService(private val project: Project) : ProjectImportingWizardService, @@ -30,7 +35,9 @@ class IdeaGradleWizardService(private val project: Project) : ProjectImportingWi override fun importProject( path: Path, modulesIrs: List - ): TaskResult = safe { + ): TaskResult = performImport(path) andThen createGradleWrapper(path) + + private fun performImport(path: Path) = safe { val virtualFile = LocalFileSystem.getInstance().findFileByPath(path.toString())!! val dataContext = SimpleDataContext.getSimpleContext( mapOf( @@ -48,4 +55,19 @@ class IdeaGradleWizardService(private val project: Project) : ProjectImportingWi ) action.actionPerformed(event) } + + + private fun createGradleWrapper(path: Path) = safe { + val settings = ExternalSystemTaskExecutionSettings().apply { + externalProjectPath = path.toString() + taskNames = listOf(WRAPPER_TASK_NAME) + externalSystemIdString = GradleConstants.SYSTEM_ID.id + } + + ExternalSystemUtil.runTask(settings, DefaultRunExecutor.EXECUTOR_ID, project, GradleConstants.SYSTEM_ID) + } + + companion object { + private const val WRAPPER_TASK_NAME = "wrapper" + } } \ No newline at end of file