Wizard: add support of creating run configurations

#KT-36043 fixed
This commit is contained in:
Ilya Kirillov
2020-01-22 19:37:30 +03:00
parent d330652eee
commit 0a4d45b347
10 changed files with 145 additions and 10 deletions
@@ -0,0 +1,45 @@
/*
* Copyright 2010-2019 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.tools.projectWizard.wizard.service
import com.intellij.execution.RunManager
import com.intellij.openapi.externalSystem.service.execution.ExternalSystemRunConfiguration
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.tools.projectWizard.WizardGradleRunConfiguration
import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.service.RunConfigurationsService
import org.jetbrains.kotlin.tools.projectWizard.core.service.isBuildSystemAvailable
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
import org.jetbrains.plugins.gradle.service.execution.GradleExternalTaskConfigurationType
class IdeaRunConfigurationsService(private val project: Project) : RunConfigurationsService, IdeaWizardService {
override fun ValuesReadingContext.addRunConfigurations(configurations: List<WizardRunConfiguration>) {
configurations.forEach { wizardConfiguration ->
if (wizardConfiguration is WizardGradleRunConfiguration && isBuildSystemAvailable(BuildSystemType.GradleKotlinDsl)) {
addGradleRunConfiguration(wizardConfiguration)
}
}
}
private fun addGradleRunConfiguration(wizardConfiguration: WizardGradleRunConfiguration) {
val runManager = RunManager.getInstance(project)
val configurationFactory = GradleExternalTaskConfigurationType().configurationFactories[0]
val ideaConfiguration = runManager.createConfiguration(wizardConfiguration.configurationName, configurationFactory)
val runConfiguration = ideaConfiguration.configuration
if (runConfiguration is ExternalSystemRunConfiguration) {
runConfiguration.settings.apply {
taskNames = listOf(wizardConfiguration.taskName)
scriptParameters = wizardConfiguration.parameters.joinToString(separator = " ")
externalProjectPath = project.basePath
}
runManager.apply {
addConfiguration(ideaConfiguration)
selectedConfiguration = ideaConfiguration
}
}
}
}
@@ -23,7 +23,8 @@ object IdeaServices {
IdeaGradleWizardService(project),
IdeaMavenWizardService(project),
IdeaJpsWizardService(project, model),
IdeaFileFormattingService(project)
IdeaFileFormattingService(project),
IdeaRunConfigurationsService(project)
)
}