From b8d7290f76d5d2b0e387eb7bf7363c6bdd1a18d6 Mon Sep 17 00:00:00 2001 From: Andrii Zinchenko Date: Thu, 26 Sep 2024 19:49:22 +0200 Subject: [PATCH] [eel] EelProcess.awaitExecutionResult: ExecutionResult -> ProcessOutput - rename to awaitProcessResult GitOrigin-RevId: 4c520bad6980c17cc59889f45fb13416617e6610 --- .../intellij.platform.eel.provider.iml | 1 - .../eel/provider/utils/eelProcessUtils.kt | 30 +++++++++++-------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/platform/eelProvider/intellij.platform.eel.provider.iml b/platform/eelProvider/intellij.platform.eel.provider.iml index 778033f36aea..aadb7fde468b 100644 --- a/platform/eelProvider/intellij.platform.eel.provider.iml +++ b/platform/eelProvider/intellij.platform.eel.provider.iml @@ -19,6 +19,5 @@ - \ No newline at end of file diff --git a/platform/eelProvider/src/com/intellij/platform/eel/provider/utils/eelProcessUtils.kt b/platform/eelProvider/src/com/intellij/platform/eel/provider/utils/eelProcessUtils.kt index fd7ec62af88d..d0e8ae962b2c 100644 --- a/platform/eelProvider/src/com/intellij/platform/eel/provider/utils/eelProcessUtils.kt +++ b/platform/eelProvider/src/com/intellij/platform/eel/provider/utils/eelProcessUtils.kt @@ -1,8 +1,10 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.platform.eel.provider.utils -import com.intellij.execution.processTools.ExecutionResult +import com.intellij.execution.process.ProcessOutput import com.intellij.platform.eel.* +import com.intellij.platform.eel.fs.getPath +import com.intellij.platform.eel.path.EelPath import com.intellij.util.io.computeDetached import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.channels.consumeEach @@ -40,20 +42,22 @@ fun EelExecApi.ExecuteProcessResult.unwrap() = when (this) { * @see ExecutionResult */ @OptIn(DelicateCoroutinesApi::class) -suspend fun EelProcess.awaitExecutionResult() = computeDetached { - ByteArrayOutputStream().use { out -> - ByteArrayOutputStream().use { err -> - coroutineScope { - launch { - stdout.consumeEach(out::write) +suspend fun EelProcess.awaitProcessResult(): ProcessOutput { + return computeDetached { + ByteArrayOutputStream().use { out -> + ByteArrayOutputStream().use { err -> + coroutineScope { + launch { + stdout.consumeEach(out::write) + } + + launch { + stderr.consumeEach(err::write) + } } - launch { - stderr.consumeEach(err::write) - } + ProcessOutput(String(out.toByteArray()), String(err.toByteArray()), exitCode.await(), false, false) } - - ExecutionResult(exitCode.await(), out.toByteArray(), err.toByteArray()) } } } @@ -86,7 +90,7 @@ suspend fun EelApi.where(exe: String): EelPath.Absolute? { else -> throw IllegalArgumentException("Unsupported OS: $this") } - val result = exec.executeProcess(tool, exe).unwrap().awaitExecutionResult() + val result = exec.executeProcess(tool, exe).unwrap().awaitProcessResult() if (result.exitCode != 0) { // TODO: log error?/throw Exception?