User: kyle wood Date: 19 Jan 26 02:17 Revision: 38d50c6ee59ea64f0abcedfe9720da08876d0d04 Summary: Add run config creator finalizers TeamCity URL: http://ci.mcdev.io:80/viewModification.html?tab=vcsModificationFiles&modId=10401&personal=false Index: src/main/kotlin/creator/custom/finalizers/AddGradleRunConfigFinalizer.kt =================================================================== --- src/main/kotlin/creator/custom/finalizers/AddGradleRunConfigFinalizer.kt (revision 38d50c6ee59ea64f0abcedfe9720da08876d0d04) +++ src/main/kotlin/creator/custom/finalizers/AddGradleRunConfigFinalizer.kt (revision 38d50c6ee59ea64f0abcedfe9720da08876d0d04) @@ -0,0 +1,43 @@ +package com.demonwav.mcdev.creator.custom.finalizers + +import com.intellij.execution.RunManager +import com.intellij.ide.util.projectWizard.WizardContext +import com.intellij.openapi.project.Project +import org.jetbrains.plugins.gradle.service.execution.GradleExternalTaskConfigurationType +import org.jetbrains.plugins.gradle.service.execution.GradleRunConfiguration + +class AddGradleRunConfigFinalizer : AddRunConfigFinalizer { + + override val executablesName: String = "tasks" + + override suspend fun execute( + context: WizardContext, + project: Project, + properties: Map, + templateProperties: Map + ) { + val tasks = properties.executables + val projectDir = context.projectFileDirectory + + val gradleType = GradleExternalTaskConfigurationType.getInstance() + + val runManager = RunManager.getInstance(project) + val runConfigName = properties["name"] as String + + val runConfiguration = GradleRunConfiguration(project, gradleType.factory, runConfigName) + + runConfiguration.settings.externalProjectPath = projectDir + runConfiguration.settings.executionName = runConfigName + runConfiguration.settings.taskNames = tasks + + val settings = runManager.createConfiguration(runConfiguration, gradleType.factory) + settings.isActivateToolWindowBeforeRun = true + settings.storeInLocalWorkspace() + + runManager.addConfiguration(settings) + + if (properties["select"] == true || runManager.selectedConfiguration == null) { + runManager.selectedConfiguration = settings + } + } +} Index: src/main/kotlin/creator/custom/finalizers/AddMavenRunConfigFinalizer.kt =================================================================== --- src/main/kotlin/creator/custom/finalizers/AddMavenRunConfigFinalizer.kt (revision 38d50c6ee59ea64f0abcedfe9720da08876d0d04) +++ src/main/kotlin/creator/custom/finalizers/AddMavenRunConfigFinalizer.kt (revision 38d50c6ee59ea64f0abcedfe9720da08876d0d04) @@ -0,0 +1,41 @@ +package com.demonwav.mcdev.creator.custom.finalizers + +import com.intellij.execution.RunManager +import com.intellij.ide.util.projectWizard.WizardContext +import com.intellij.openapi.project.Project +import org.jetbrains.idea.maven.execution.MavenRunConfigurationType +import org.jetbrains.idea.maven.execution.MavenRunnerParameters +import org.jetbrains.idea.maven.execution.MavenRunnerSettings + +class AddMavenRunConfigFinalizer : AddRunConfigFinalizer { + + override val executablesName: String = "goals" + + override suspend fun execute( + context: WizardContext, + project: Project, + properties: Map, + templateProperties: Map + ) { + val goals = properties.executables + val projectDir = context.projectFileDirectory + + val params = MavenRunnerParameters().also { + it.goals = goals + it.workingDirPath = projectDir + } + val settings = MavenRunConfigurationType.createRunnerAndConfigurationSettings(null, null, params, project) + + settings.name = properties["name"] as String + settings.isActivateToolWindowBeforeRun = true + settings.storeInLocalWorkspace() + + val runManager = RunManager.getInstance(project) + + runManager.addConfiguration(settings) + + if (properties["select"] == true || runManager.selectedConfiguration == null) { + runManager.selectedConfiguration = settings + } + } +} Index: src/main/kotlin/creator/custom/finalizers/AddRunConfigFinalizer.kt =================================================================== --- src/main/kotlin/creator/custom/finalizers/AddRunConfigFinalizer.kt (revision 38d50c6ee59ea64f0abcedfe9720da08876d0d04) +++ src/main/kotlin/creator/custom/finalizers/AddRunConfigFinalizer.kt (revision 38d50c6ee59ea64f0abcedfe9720da08876d0d04) @@ -0,0 +1,28 @@ +package com.demonwav.mcdev.creator.custom.finalizers + +import com.demonwav.mcdev.creator.custom.TemplateValidationReporter + +interface AddRunConfigFinalizer : CreatorFinalizer { + + val executablesName: String + val Map.executables: List + @Suppress("UNCHECKED_CAST") + get() = this[executablesName] as List + + override fun validate( + reporter: TemplateValidationReporter, + properties: Map + ) { + @Suppress("UNCHECKED_CAST") + val executables = properties[executablesName] as? List + if (executables == null) { + reporter.warn("Missing list of '$executables' to execute") + } + + @Suppress("UNCHECKED_CAST") + val name = properties["name"] as? String + if (name == null) { + reporter.warn("Missing task name") + } + } +} Index: src/main/resources/META-INF/plugin.xml =================================================================== --- src/main/resources/META-INF/plugin.xml (revision 8effb1f558941e9089bd69527ba46c7a8f56222f) +++ src/main/resources/META-INF/plugin.xml (revision 38d50c6ee59ea64f0abcedfe9720da08876d0d04) @@ -239,8 +239,12 @@ + +