Skip to content

Commit 1c48d01

Browse files
committed
feat(devins-lang): 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 fe5c996 commit 1c48d01

File tree

3 files changed

+39
-1
lines changed

3 files changed

+39
-1
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cc.unitmesh.devti.language.compiler.exec
22

3+
import cc.unitmesh.devti.language.compiler.service.ShellRunService
34
import cc.unitmesh.devti.language.utils.lookupFile
45
import com.intellij.openapi.application.ApplicationManager
56
import com.intellij.openapi.project.Project
@@ -26,6 +27,8 @@ class ShellInsCommand(val myProject: Project, private val argument: String) : In
2627
shRunner.run(myProject, virtualFile.path, workingDirectory, "RunDevInsShell", true)
2728
}
2829

30+
// ShellRunService().runFile(myProject, virtualFile, null)
31+
2932
return "Running shell command: $argument"
3033
}
3134
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package cc.unitmesh.devti.language.compiler.service
2+
3+
import cc.unitmesh.devti.provider.RunService
4+
import com.intellij.execution.RunManager
5+
import com.intellij.execution.RunnerAndConfigurationSettings
6+
import com.intellij.execution.configurations.RunConfiguration
7+
import com.intellij.execution.configurations.RunProfile
8+
import com.intellij.openapi.project.Project
9+
import com.intellij.openapi.vfs.VirtualFile
10+
import com.intellij.psi.PsiElement
11+
import com.intellij.sh.psi.ShFile
12+
import com.intellij.sh.run.ShConfigurationType
13+
import com.intellij.sh.run.ShRunConfiguration
14+
15+
class ShellRunService : RunService {
16+
override fun runConfigurationClass(project: Project): Class<out RunProfile> = ShRunConfiguration::class.java
17+
override fun psiFileClass(project: Project): Class<out PsiElement> = ShFile::class.java
18+
19+
override fun createConfiguration(project: Project, virtualFile: VirtualFile): RunConfiguration? {
20+
val configurationSetting = RunManager.getInstance(project)
21+
.createConfiguration(virtualFile.name, ShConfigurationType.getInstance())
22+
23+
val configuration = configurationSetting.configuration as ShRunConfiguration
24+
configuration.scriptPath = virtualFile.path
25+
return configurationSetting.configuration
26+
}
27+
28+
override fun createRunSettings(project: Project, virtualFile: VirtualFile): RunnerAndConfigurationSettings? {
29+
val runManager = RunManager.getInstance(project)
30+
this.createConfiguration(project, virtualFile)?.let {
31+
return runManager.findSettings(it)
32+
}
33+
34+
return null
35+
}
36+
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ interface RunService {
8383
fun runFile(project: Project, virtualFile: VirtualFile, testElement: PsiElement?): String? {
8484
val runTask = RunServiceTask(project, virtualFile, testElement, this)
8585
ProgressManager.getInstance().run(runTask)
86-
8786
return null
8887
}
8988
}

0 commit comments

Comments
 (0)