mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJPL-239066 Common overload for executing and debugging
(cherry picked from commit bf8bc613c16ce12da46bce0068b2190f4df83222) GitOrigin-RevId: a546cdb25dfa79aeb76e4cd97fcea2812396e23d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
632eff06f3
commit
7ca362c2d2
@@ -79,6 +79,7 @@ tool.activity.getting.symbol.info=Getting symbol info at ''{0}:{1}:{2}''
|
||||
tool.activity.renaming.symbol=Renaming ''{0}'' to ''{1}'' in ''{2}''
|
||||
tool.activity.getting.run.configurations=Getting run configurations
|
||||
tool.activity.executing.run.configuration=Executing run configuration ''{0}''
|
||||
tool.activity.starting.debug.run.configuration=Starting debug run configuration ''{0}''
|
||||
tool.activity.collecting.file.problems=Collecting problems in file ''{0}''
|
||||
tool.activity.listing.modules=Listing modules
|
||||
tool.activity.checking.dependencies=Checking dependencies
|
||||
|
||||
@@ -134,9 +134,41 @@ class ExecutionToolset : McpToolset {
|
||||
workingDirectory: String? = null,
|
||||
@McpDescription("Optional environment variable overrides for this launch only. Missing/null keeps existing env unchanged; when provided, values are merged over existing env.")
|
||||
envs: Map<String, String>? = null,
|
||||
): RunConfigurationResult {
|
||||
): RunConfigurationResult {
|
||||
return executeRunConfiguration(
|
||||
configurationName = configurationName,
|
||||
filePath = filePath,
|
||||
line = line,
|
||||
timeout = timeout,
|
||||
maxLinesCount = maxLinesCount,
|
||||
truncateMode = truncateMode,
|
||||
programArguments = programArguments,
|
||||
workingDirectory = workingDirectory,
|
||||
envs = envs,
|
||||
isDebug = false,
|
||||
)
|
||||
}
|
||||
|
||||
// for start_debug_session
|
||||
suspend fun executeRunConfiguration(
|
||||
configurationName: String? = null,
|
||||
filePath: String? = null,
|
||||
line: Int? = null,
|
||||
timeout: Int,
|
||||
maxLinesCount: Int,
|
||||
truncateMode: TruncateMode,
|
||||
programArguments: String?,
|
||||
workingDirectory: String?,
|
||||
envs: Map<String, String>?,
|
||||
isDebug: Boolean,
|
||||
): RunConfigurationResult {
|
||||
val executionTarget = resolveRunConfigurationExecutionTarget(configurationName = configurationName, filePath = filePath, line = line)
|
||||
currentCoroutineContext().reportToolActivity(McpServerBundle.message("tool.activity.executing.run.configuration", executionTarget.presentableName))
|
||||
currentCoroutineContext().reportToolActivity(
|
||||
McpServerBundle.message(
|
||||
if (isDebug) "tool.activity.starting.debug.run.configuration" else "tool.activity.executing.run.configuration",
|
||||
executionTarget.presentableName,
|
||||
)
|
||||
)
|
||||
val project = currentCoroutineContext().project
|
||||
|
||||
val resolvedConfiguration = resolveRunConfigurationForExecution(
|
||||
@@ -162,6 +194,7 @@ class ExecutionToolset : McpToolset {
|
||||
timeout = timeout,
|
||||
maxLinesCount = maxLinesCount,
|
||||
truncateMode = truncateMode,
|
||||
isDebug = isDebug,
|
||||
)
|
||||
return RunConfigurationResult(
|
||||
exitCode = executionOutput.exitCode,
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.intellij.execution.RunnerAndConfigurationSettings
|
||||
import com.intellij.execution.actions.ConfigurationContext
|
||||
import com.intellij.execution.actions.ConfigurationFromContext
|
||||
import com.intellij.execution.configurations.RunConfiguration
|
||||
import com.intellij.execution.executors.DefaultDebugExecutor
|
||||
import com.intellij.execution.executors.DefaultRunExecutor
|
||||
import com.intellij.execution.lineMarker.RunLineMarkerContributor
|
||||
import com.intellij.execution.lineMarker.RunLineMarkerContributor.Info
|
||||
@@ -259,8 +260,14 @@ internal suspend fun executeResolvedRunConfiguration(
|
||||
timeout: Int,
|
||||
maxLinesCount: Int,
|
||||
truncateMode: TruncateMode,
|
||||
isDebug: Boolean,
|
||||
): RunConfigurationExecutionOutput {
|
||||
val executor = DefaultRunExecutor.getRunExecutorInstance() ?: mcpFail("Execution is not supported in this environment or IDE")
|
||||
val executor = if (isDebug) {
|
||||
DefaultDebugExecutor.getDebugExecutorInstance() ?: mcpFail("Debugging is not available in this environment or IDE.")
|
||||
}
|
||||
else {
|
||||
DefaultRunExecutor.getRunExecutorInstance() ?: mcpFail("Execution is not supported in this environment or IDE")
|
||||
}
|
||||
val exitCodeDeferred = CompletableDeferred<Int>()
|
||||
val outputBuilder = StringBuilder()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user