From 262675324546cebcc96f832376220ddb71718518 Mon Sep 17 00:00:00 2001 From: Andrii Zinchenko Date: Wed, 2 Jul 2025 13:13:48 +0200 Subject: [PATCH] [platform-eel] EelBuildCommandLineBuilder: pass eel env vars in to the `PathManager.getDefaultSystemPathFor` - add `getSystemFolder` in to the `EelPathUtils` GitOrigin-RevId: e4f41cb3a107352ecab1c3fe9dd92583effebe53 --- .../server/EelBuildCommandLineBuilder.kt | 11 +------ .../eel/provider/utils/eelPathUtils.kt | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/server/EelBuildCommandLineBuilder.kt b/java/compiler/impl/src/com/intellij/compiler/server/EelBuildCommandLineBuilder.kt index 8c52ae6dde84..588b8e3fb746 100644 --- a/java/compiler/impl/src/com/intellij/compiler/server/EelBuildCommandLineBuilder.kt +++ b/java/compiler/impl/src/com/intellij/compiler/server/EelBuildCommandLineBuilder.kt @@ -116,21 +116,12 @@ class EelBuildCommandLineBuilder(val project: Project, exePath: Path) : BuildCom return remoteServer.asCompletableFuture().get().port.toInt() } - fun EelPlatform.asPathManagerOs(): PathManager.OS = - when (this) { - is EelPlatform.Windows -> PathManager.OS.WINDOWS - is EelPlatform.Darwin -> PathManager.OS.MACOS - is EelPlatform.Linux, is EelPlatform.FreeBSD -> PathManager.OS.LINUX - } - private fun getSystemSubfolder(subfolder: String): Path { return getSystemFolderRoot().resolve(subfolder) } private fun getSystemFolderRoot(): Path { - val selector = PathManager.getPathsSelector() ?: "IJ-Platform" - val userHomeFolder = eel.userInfo.home.asNioPath().toString() - return PathManager.getDefaultSystemPathFor(eel.platform.asPathManagerOs(), userHomeFolder, selector) + return EelPathUtils.getSystemFolder(eel) } } diff --git a/platform/eel-provider/src/com/intellij/platform/eel/provider/utils/eelPathUtils.kt b/platform/eel-provider/src/com/intellij/platform/eel/provider/utils/eelPathUtils.kt index b51a1985f2c3..ad166ab8d221 100644 --- a/platform/eel-provider/src/com/intellij/platform/eel/provider/utils/eelPathUtils.kt +++ b/platform/eel-provider/src/com/intellij/platform/eel/provider/utils/eelPathUtils.kt @@ -1,12 +1,14 @@ // Copyright 2000-2025 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.openapi.application.PathManager import com.intellij.openapi.components.Service import com.intellij.openapi.components.service import com.intellij.openapi.progress.runBlockingMaybeCancellable import com.intellij.openapi.project.Project import com.intellij.platform.eel.EelApi import com.intellij.platform.eel.EelDescriptor +import com.intellij.platform.eel.EelPlatform import com.intellij.platform.eel.fs.createTemporaryDirectory import com.intellij.platform.eel.fs.createTemporaryFile import com.intellij.platform.eel.isWindows @@ -15,6 +17,7 @@ import com.intellij.platform.eel.provider.LocalEelDescriptor import com.intellij.platform.eel.provider.asEelPath import com.intellij.platform.eel.provider.asNioPath import com.intellij.platform.eel.provider.getEelDescriptor +import com.intellij.platform.eel.provider.toEelApiBlocking import com.intellij.platform.eel.provider.utils.EelPathUtils.transferLocalContentToRemote import com.intellij.util.concurrency.annotations.RequiresBackgroundThread import kotlinx.coroutines.* @@ -82,6 +85,34 @@ object EelPathUtils { } } + private fun EelPlatform.asPathManagerOs(): PathManager.OS = + when (this) { + is EelPlatform.Windows -> PathManager.OS.WINDOWS + is EelPlatform.Darwin -> PathManager.OS.MACOS + is EelPlatform.Linux -> PathManager.OS.LINUX + is EelPlatform.FreeBSD -> PathManager.OS.GENERIC_UNIX + } + + @JvmStatic + @RequiresBackgroundThread(generateAssertion = false) + fun getSystemFolder(project: Project): Path { + return getSystemFolder(project.getEelDescriptor().toEelApiBlocking()) + } + + @JvmStatic + @RequiresBackgroundThread(generateAssertion = false) + fun getSystemFolder(eelDescriptor: EelDescriptor): Path { + return getSystemFolder(eelDescriptor.toEelApiBlocking()) + } + + @JvmStatic + @RequiresBackgroundThread(generateAssertion = false) + fun getSystemFolder(eel: EelApi): Path { + val selector = PathManager.getPathsSelector() ?: "IJ-Platform" + val userHomeFolder = eel.userInfo.home.asNioPath().toString() + return PathManager.getDefaultSystemPathFor(eel.platform.asPathManagerOs(), userHomeFolder, selector, eel.exec.fetchLoginShellEnvVariablesBlocking()) + } + @JvmStatic @RequiresBackgroundThread(generateAssertion = false) fun createTemporaryDirectory(project: Project?, prefix: String = ""): Path {