Skip to content

Commit 44b3859

Browse files
committed
feat(run-service): introduce new ShellRunService to support running shell scripts. This service simplifies the execution of shell commands within the DevIns IDE, enhancing the user experience. #100
1 parent 3ce99a7 commit 44b3859

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

src/main/kotlin/cc/unitmesh/devti/provider/RunService.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package cc.unitmesh.devti.provider
33
import cc.unitmesh.devti.runner.RunServiceTask
44
import com.intellij.execution.RunManager
55
import com.intellij.execution.RunnerAndConfigurationSettings
6+
import com.intellij.execution.actions.ConfigurationContext
67
import com.intellij.execution.configurations.RunConfiguration
78
import com.intellij.execution.configurations.RunProfile
89
import com.intellij.openapi.diagnostic.Logger
@@ -35,6 +36,9 @@ interface RunService {
3536
*/
3637
fun createConfiguration(project: Project, virtualFile: VirtualFile): RunConfiguration? = null
3738

39+
fun createDefaultTestConfigurations(project: Project, element: PsiElement): RunnerAndConfigurationSettings? {
40+
return ConfigurationContext(element).configurationsFromContext?.firstOrNull()?.configurationSettings
41+
}
3842
/**
3943
* Creates a new run configuration settings for the given project and virtual file.
4044
*
@@ -88,8 +92,8 @@ interface RunService {
8892
* @param virtualFile The virtual file that represents the file to be run.
8993
* @return The result of the run operation, or `null` if an error occurred.
9094
*/
91-
fun runFile(project: Project, virtualFile: VirtualFile, testElement: PsiElement?): String? {
92-
val runTask = RunServiceTask(project, virtualFile, testElement, this)
95+
fun runFile(project: Project, virtualFile: VirtualFile, psiElement: PsiElement?): String? {
96+
val runTask = RunServiceTask(project, virtualFile, psiElement, this)
9397
ProgressManager.getInstance().run(runTask)
9498
return null
9599
}

src/main/kotlin/cc/unitmesh/devti/runner/RunServiceTask.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import com.intellij.execution.testframework.sm.runner.SMTRunnerEventsListener
1616
import com.intellij.execution.testframework.sm.runner.SMTestProxy
1717
import com.intellij.openapi.application.invokeAndWaitIfNeeded
1818
import com.intellij.openapi.application.runInEdt
19+
import com.intellij.openapi.diagnostic.logger
1920
import com.intellij.openapi.progress.ProgressIndicator
2021
import com.intellij.openapi.project.Project
2122
import com.intellij.openapi.util.Disposer
@@ -55,7 +56,16 @@ class RunServiceTask(
5556
fun doRun(indicator: ProgressIndicator?): RunnerResult? {
5657
var settings: RunnerAndConfigurationSettings? = runService.createRunSettings(project, virtualFile)
5758
if (settings == null) {
58-
settings = createDefaultTestConfigurations(project, testElement ?: return null) ?: return null
59+
if (testElement == null) {
60+
logger<RunServiceTask>().error("No run configuration found for file: ${virtualFile.path}")
61+
return null
62+
}
63+
settings = runService.createDefaultTestConfigurations(project, testElement)
64+
65+
if (settings == null) {
66+
logger<RunServiceTask>().error("No run configuration found for element: $testElement")
67+
return null
68+
}
5969
}
6070

6171
settings.isActivateToolWindowBeforeRun = false
@@ -232,9 +242,4 @@ class RunServiceTask(
232242
}
233243
}
234244
}
235-
236-
237-
fun createDefaultTestConfigurations(project: Project, element: PsiElement): RunnerAndConfigurationSettings? {
238-
return ConfigurationContext(element).configurationsFromContext?.firstOrNull()?.configurationSettings
239-
}
240245
}

0 commit comments

Comments
 (0)