From 5a0729c244e18a89ce1a618c657d34dbfa41feb4 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Wed, 12 Apr 2017 14:42:38 +0200 Subject: [PATCH] Add possibility for flavor to patch command line before execution (https://github.com/JetBrains/intellij-community/pull/534) --- python/src/com/jetbrains/python/sdk/PySdkUtil.java | 10 ++++++++++ python/src/com/jetbrains/python/sdk/PythonEnvUtil.java | 1 + .../jetbrains/python/sdk/flavors/PythonSdkFlavor.java | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/python/src/com/jetbrains/python/sdk/PySdkUtil.java b/python/src/com/jetbrains/python/sdk/PySdkUtil.java index 48210bbd82e7..1a38fd9b7c10 100644 --- a/python/src/com/jetbrains/python/sdk/PySdkUtil.java +++ b/python/src/com/jetbrains/python/sdk/PySdkUtil.java @@ -33,6 +33,8 @@ import com.intellij.psi.PsiFile; import com.intellij.remote.RemoteSdkAdditionalData; import com.intellij.util.SystemProperties; import com.intellij.util.containers.HashMap; +import com.jetbrains.python.run.CommandLinePatcher; +import com.jetbrains.python.sdk.flavors.PythonSdkFlavor; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -125,6 +127,14 @@ public class PySdkUtil { try { final GeneralCommandLine commandLine = cmd.withWorkDirectory(homePath).withEnvironment(env); + + final PythonSdkFlavor flavor = PythonSdkFlavor.getFlavor(commandLine.getExePath()); + + final CommandLinePatcher cmdLinePatcher = flavor.commandLinePatcher(); + if (cmdLinePatcher != null) { + cmdLinePatcher.patchCommandLine(cmd); + } + final CapturingProcessHandler processHandler = new CapturingProcessHandler(commandLine); if (stdin != null) { final OutputStream processInput = processHandler.getProcessInput(); diff --git a/python/src/com/jetbrains/python/sdk/PythonEnvUtil.java b/python/src/com/jetbrains/python/sdk/PythonEnvUtil.java index 03fed89449b5..48ab5234ff15 100644 --- a/python/src/com/jetbrains/python/sdk/PythonEnvUtil.java +++ b/python/src/com/jetbrains/python/sdk/PythonEnvUtil.java @@ -66,6 +66,7 @@ public class PythonEnvUtil { * @param value what to append * @return modified path-like string */ + @NotNull public static String appendToPathEnvVar(@Nullable String source, @NotNull String value) { if (StringUtil.isEmpty(source)) return value; diff --git a/python/src/com/jetbrains/python/sdk/flavors/PythonSdkFlavor.java b/python/src/com/jetbrains/python/sdk/flavors/PythonSdkFlavor.java index 59de303a73fb..5181beb33af4 100644 --- a/python/src/com/jetbrains/python/sdk/flavors/PythonSdkFlavor.java +++ b/python/src/com/jetbrains/python/sdk/flavors/PythonSdkFlavor.java @@ -29,6 +29,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.PatternUtil; import com.jetbrains.python.psi.LanguageLevel; +import com.jetbrains.python.run.CommandLinePatcher; import com.jetbrains.python.sdk.PySdkUtil; import com.jetbrains.python.sdk.PythonEnvUtil; import com.jetbrains.python.sdk.PythonSdkAdditionalData; @@ -256,4 +257,9 @@ public abstract class PythonSdkFlavor { public VirtualFile getSdkPath(VirtualFile path) { return path; } + + @Nullable + public CommandLinePatcher commandLinePatcher() { + return null; + } }