Skip to content

Commit 3601d49

Browse files
committed
add PATH
1 parent 9e323fe commit 3601d49

File tree

1 file changed

+15
-28
lines changed
  • plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqCodeTest/utils

1 file changed

+15
-28
lines changed

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqCodeTest/utils/UTGChatUtil.kt

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
package software.aws.toolkits.jetbrains.services.amazonqCodeTest.utils
55

66
import com.intellij.build.BuildContentManager
7+
import com.intellij.execution.configurations.GeneralCommandLine
78
import com.intellij.execution.impl.ConsoleViewImpl
89
import com.intellij.execution.process.OSProcessHandler
910
import com.intellij.execution.process.ProcessAdapter
1011
import com.intellij.execution.process.ProcessEvent
11-
import com.intellij.execution.process.ProcessHandler
1212
import com.intellij.execution.ui.ConsoleView
1313
import com.intellij.execution.ui.ConsoleViewContentType
1414
import com.intellij.openapi.application.ApplicationManager
@@ -17,18 +17,13 @@ import com.intellij.openapi.util.Key
1717
import com.intellij.openapi.vfs.VirtualFile
1818
import com.intellij.openapi.vfs.VirtualFileManager
1919
import com.intellij.ui.content.impl.ContentImpl
20-
import kotlinx.coroutines.currentCoroutineContext
21-
import kotlinx.coroutines.withContext
22-
import software.aws.toolkits.jetbrains.core.coroutines.EDT
2320
import software.aws.toolkits.jetbrains.services.amazonqCodeTest.model.getBuildIcon
2421
import software.aws.toolkits.jetbrains.services.amazonqCodeTest.model.getExecutionIcon
2522
import software.aws.toolkits.jetbrains.services.amazonqCodeTest.model.getFixingTestCasesIcon
2623
import software.aws.toolkits.jetbrains.services.amazonqCodeTest.session.BuildAndExecuteProgressStatus
2724
import software.aws.toolkits.jetbrains.services.amazonqCodeTest.session.BuildAndExecuteTaskContext
2825
import java.io.File
2926
import java.io.FileWriter
30-
import java.nio.charset.StandardCharsets
31-
import java.nio.file.Files
3227

3328
fun constructBuildAndExecutionSummaryText(currentStatus: BuildAndExecuteProgressStatus, iterationNum: Int): String {
3429
val progressMessages = mutableListOf<String>()
@@ -92,12 +87,14 @@ fun runBuildOrTestCommand(
9287
buildAndExecuteTaskContext: BuildAndExecuteTaskContext,
9388
testFileRelativePathToProjectRoot: String,
9489
) {
90+
val brazilPath = "${System.getProperty("user.home")}/.toolbox/bin:/usr/local/bin:/usr/bin:/bin:/sbin"
9591
if (localCommand.isEmpty()) {
9692
buildAndExecuteTaskContext.testExitCode = 0
9793
return
9894
}
9995
val projectRoot = File(project.basePath ?: return)
10096
val testFileAbsolutePath = File(projectRoot, testFileRelativePathToProjectRoot)
97+
val file = File(tmpFile.path)
10198

10299
// Find the nearest Gradle root directory
103100
var packageRoot: File? = testFileAbsolutePath.parentFile
@@ -107,40 +104,31 @@ fun runBuildOrTestCommand(
107104
}
108105
packageRoot = packageRoot.parentFile
109106
}
110-
111107
// If no valid Gradle directory is found, fallback to the project root
112-
val workingDir = packageRoot ?: projectRoot
113-
println("Running command in directory: ${workingDir.absolutePath}")
114-
// val repositoryPath = project.basePath ?: return
115-
val commandParts = localCommand.split(" ")
116-
val command = commandParts.first()
117-
val args = commandParts.drop(1)
118-
val file = File(tmpFile.path)
119-
120-
// Create Console View for Build Output
108+
val gradleWrapper = File(packageRoot, "gradlew")
109+
val workingDir = if (gradleWrapper.exists()) packageRoot else projectRoot
121110
val console: ConsoleView = ConsoleViewImpl(project, true)
122111

123112
// Attach Console View to Build Tool Window
124113
ApplicationManager.getApplication().invokeLater {
125114
val tabName = if (isBuildCommand) "Q TestGen Build Output" else "Q Test Gen Test Execution Output"
126115
val content = ContentImpl(console.component, tabName, true)
127116
BuildContentManager.getInstance(project).addContent(content)
128-
// TODO: remove these tabs when they are not needed
129117
BuildContentManager.getInstance(project).setSelectedContent(content, false, false, true, null)
130118
}
131119

132-
val processBuilder = ProcessBuilder()
133-
.command(listOf("zsh", "-c", "source ~/.zshrc && $command ${args.joinToString(" ")}"))
134-
.directory(packageRoot)
135-
.redirectErrorStream(true)
136-
137-
val env = processBuilder.environment()
138-
139-
env["PATH"] = System.getenv("PATH")
120+
val commandLine = when {
121+
System.getProperty("os.name").lowercase().contains("win") -> {
122+
GeneralCommandLine("cmd.exe", "/c", "set PATH=%PATH%;$brazilPath && $localCommand")
123+
}
124+
else -> {
125+
GeneralCommandLine("sh", "-c", "export PATH=\"$brazilPath\" && $localCommand")
126+
}
127+
}.withWorkDirectory(workingDir)
140128

141129
try {
142-
val process = processBuilder.start()
143-
val processHandler: ProcessHandler = OSProcessHandler(process, localCommand, null)
130+
// val process = processBuilder.start()
131+
val processHandler = OSProcessHandler(commandLine)
144132

145133
// Attach Process Listener for Output Handling
146134
processHandler.addProcessListener(object : ProcessAdapter() {
@@ -200,4 +188,3 @@ private fun cleanText(input: String): String {
200188
}
201189
return cleaned.toString()
202190
}
203-

0 commit comments

Comments
 (0)