Skip to content

Commit 44d6d79

Browse files
committed
refactor(run-service): refactor createDefaultTestConfigurations method to be private and add support for creating run configurations from a PsiElement. #100
1 parent 3375f8a commit 44d6d79

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

exts/devins-lang/src/main/kotlin/cc/unitmesh/devti/language/compiler/exec/ShellInsCommand.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ package cc.unitmesh.devti.language.compiler.exec
22

33
import cc.unitmesh.devti.language.compiler.service.ShellRunService
44
import cc.unitmesh.devti.language.utils.lookupFile
5+
import com.intellij.execution.RunnerAndConfigurationSettings
56
import com.intellij.openapi.application.ApplicationManager
67
import com.intellij.openapi.project.Project
8+
import com.intellij.psi.PsiManager
9+
import com.intellij.sh.psi.ShFile
710
import com.intellij.sh.run.ShRunner
811

912
/**
@@ -18,17 +21,21 @@ import com.intellij.sh.run.ShRunner
1821
class ShellInsCommand(val myProject: Project, private val argument: String) : InsCommand {
1922
override suspend fun execute(): String? {
2023
val virtualFile = myProject.lookupFile(argument.trim()) ?: return "<DevInsError>: File not found: $argument"
24+
val psiFile = PsiManager.getInstance(myProject).findFile(virtualFile) as? ShFile
25+
val settings: RunnerAndConfigurationSettings? = ShellRunService().createRunSettings(myProject, virtualFile, psiFile)
26+
27+
if (settings != null) {
28+
ShellRunService().runFile(myProject, virtualFile, psiFile)
29+
return "Running shell file: $argument"
30+
}
2131

2232
val workingDirectory = virtualFile.parent.path
2333
val shRunner = ApplicationManager.getApplication().getService(ShRunner::class.java)
2434

25-
// TODO:
2635
if (shRunner != null && shRunner.isAvailable(myProject)) {
2736
shRunner.run(myProject, virtualFile.path, workingDirectory, "RunDevInsShell", true)
2837
}
2938

30-
// ShellRunService().runFile(myProject, virtualFile, null)
31-
3239
return "Running shell command: $argument"
3340
}
3441
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,6 @@ interface RunService {
3636
*/
3737
fun createConfiguration(project: Project, virtualFile: VirtualFile): RunConfiguration? = null
3838

39-
fun createDefaultTestConfigurations(project: Project, element: PsiElement): RunnerAndConfigurationSettings? {
40-
return ConfigurationContext(element).configurationsFromContext?.firstOrNull()?.configurationSettings
41-
}
4239
/**
4340
* Creates a new run configuration settings for the given project and virtual file.
4441
*
@@ -91,6 +88,10 @@ interface RunService {
9188
return settings
9289
}
9390

91+
private fun createDefaultTestConfigurations(project: Project, element: PsiElement): RunnerAndConfigurationSettings? {
92+
return ConfigurationContext(element).configurationsFromContext?.firstOrNull()?.configurationSettings
93+
}
94+
9495
/**
9596
* This function is responsible for running a file within a specified project and virtual file.
9697
* It creates a run configuration using the provided parameters and then attempts to execute it using the `ExecutionManager`. The function returns `null` if an error occurs during the configuration creation or execution process.

0 commit comments

Comments
 (0)