Wizard: create Gradle wrapper

This commit is contained in:
Ilya Kirillov
2020-02-18 15:32:25 +03:00
parent 6228fa4d3e
commit 9c5ff6c131
@@ -5,19 +5,24 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.service 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.ActionPlaces
import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.CommonDataKeys import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.actionSystem.impl.SimpleDataContext 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.project.Project
import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.openapi.vfs.LocalFileSystem
import org.jetbrains.kotlin.tools.projectWizard.core.TaskResult 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.safe
import org.jetbrains.kotlin.tools.projectWizard.core.service.ProjectImportingWizardService import org.jetbrains.kotlin.tools.projectWizard.core.service.ProjectImportingWizardService
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.ModuleIR 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.BuildSystemType
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle
import org.jetbrains.plugins.gradle.action.ImportProjectFromScriptAction import org.jetbrains.plugins.gradle.action.ImportProjectFromScriptAction
import org.jetbrains.plugins.gradle.util.GradleConstants
import java.nio.file.Path import java.nio.file.Path
class IdeaGradleWizardService(private val project: Project) : ProjectImportingWizardService, class IdeaGradleWizardService(private val project: Project) : ProjectImportingWizardService,
@@ -30,7 +35,9 @@ class IdeaGradleWizardService(private val project: Project) : ProjectImportingWi
override fun importProject( override fun importProject(
path: Path, path: Path,
modulesIrs: List<ModuleIR> modulesIrs: List<ModuleIR>
): TaskResult<Unit> = safe { ): TaskResult<Unit> = performImport(path) andThen createGradleWrapper(path)
private fun performImport(path: Path) = safe {
val virtualFile = LocalFileSystem.getInstance().findFileByPath(path.toString())!! val virtualFile = LocalFileSystem.getInstance().findFileByPath(path.toString())!!
val dataContext = SimpleDataContext.getSimpleContext( val dataContext = SimpleDataContext.getSimpleContext(
mapOf( mapOf(
@@ -48,4 +55,19 @@ class IdeaGradleWizardService(private val project: Project) : ProjectImportingWi
) )
action.actionPerformed(event) 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"
}
} }