From 0c6f1bc5b1b02e2b3640cfd8fe302994857702fc Mon Sep 17 00:00:00 2001 From: irengrig Date: Wed, 4 May 2016 09:20:41 +0200 Subject: [PATCH 1/4] python docker: fix possible NPE (cherry picked from commit 3dbafa1) --- .../jetbrains/python/run/PythonScriptCommandLineState.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/python/src/com/jetbrains/python/run/PythonScriptCommandLineState.java b/python/src/com/jetbrains/python/run/PythonScriptCommandLineState.java index a7bf782dbaf0..05d8d13a3940 100644 --- a/python/src/com/jetbrains/python/run/PythonScriptCommandLineState.java +++ b/python/src/com/jetbrains/python/run/PythonScriptCommandLineState.java @@ -52,7 +52,6 @@ public class PythonScriptCommandLineState extends PythonCommandLineState { myConfig = runConfiguration; } - @NotNull @Override public ExecutionResult execute(Executor executor, final CommandLinePatcher... patchers) throws ExecutionException { if (myConfig.showCommandLineAfterwards()) { @@ -71,7 +70,10 @@ public class PythonScriptCommandLineState extends PythonCommandLineState { PyConsoleOptions.getInstance(myConfig.getProject()).getPythonConsoleSettings()); runner.runSync(); - + // runner.getProcessHandler() would be null if execution error occurred + if (runner.getProcessHandler() == null) { + return null; + } List actions = Lists.newArrayList(createActions(runner.getConsoleView(), runner.getProcessHandler())); return new DefaultExecutionResult(runner.getConsoleView(), runner.getProcessHandler(), actions.toArray(new AnAction[actions.size()])); From 038be20aa45bd2932612af9cbe8120701d32fe99 Mon Sep 17 00:00:00 2001 From: irengrig Date: Wed, 4 May 2016 11:17:55 +0200 Subject: [PATCH 2/4] SemVer, create unknown version also from null text (cherry picked from commit b252d1f) --- platform/util/src/com/intellij/util/text/SemVer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/util/src/com/intellij/util/text/SemVer.java b/platform/util/src/com/intellij/util/text/SemVer.java index d2ed9faeb7db..e5b829ff5101 100644 --- a/platform/util/src/com/intellij/util/text/SemVer.java +++ b/platform/util/src/com/intellij/util/text/SemVer.java @@ -114,7 +114,8 @@ public class SemVer implements Comparable { } @NotNull - public static SemVer parseFromTextNonNullize(@NotNull final String text) { + public static SemVer parseFromTextNonNullize(@Nullable final String text) { + if (text == null) return UNKNOWN; final SemVer ver = parseFromText(text); return ver == null ? UNKNOWN : ver; } From 2533adc0f2faa6ee6df4b0caaec109a68460cadb Mon Sep 17 00:00:00 2001 From: irengrig Date: Mon, 9 May 2016 15:07:22 +0200 Subject: [PATCH 3/4] Initial Node.JS Docker remote execution. Registry key: NodeJS.Docker Generate 2 images with cached sources and node_modules update if user specifies that, otherwise run provided image debug is not working, docker compose is not working (cherry picked from commit c6104cf) --- platform/util/resources/misc/registry.properties | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index 5fa42afbeba4..5e64411bcf6b 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -741,4 +741,7 @@ ide.intellij.laf.win10.ui.description=Enables Windows 10 look ide.http.server.response.actual.status=false ide.rest.api.requests.per.minute=30 -ide.built.in.web.server.activatable=false \ No newline at end of file +ide.built.in.web.server.activatable=false + +NodeJS.Docker=false +NodeJS.Docker.description=Enables Node.JS remote execution with Docker (if Docker and Node.JS plugins are installed) \ No newline at end of file From f65687ef5e8a8024127a5613a7ebf014b076ebaa Mon Sep 17 00:00:00 2001 From: irengrig Date: Wed, 11 May 2016 14:33:45 +0200 Subject: [PATCH 4/4] Node.JS Docker remote execution: in case of docker debug, change host that debugger listens to, to docker machine ip, also do not change debugger port to reported by docker local debug port - debugging works now! refactor other node-docker code for clarity, create only 1 supporting image per project, cache its id in workspace.xml, keep Dockerfile for image under project (cherry picked from commit d026324) --- platform/script-debugger/debugger-ui/src/RemoteVmConnection.kt | 2 ++ .../src/org/jetbrains/debugger/DebuggableRunConfiguration.java | 3 ++- .../src/org/jetbrains/debugger/RemoteDebugConfiguration.java | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/platform/script-debugger/debugger-ui/src/RemoteVmConnection.kt b/platform/script-debugger/debugger-ui/src/RemoteVmConnection.kt index fe4299e25f02..cfd13cf1a3b7 100644 --- a/platform/script-debugger/debugger-ui/src/RemoteVmConnection.kt +++ b/platform/script-debugger/debugger-ui/src/RemoteVmConnection.kt @@ -39,6 +39,7 @@ import javax.swing.JList abstract class RemoteVmConnection : VmConnection() { var port = -1 + var isLocalAddress = true private val connectCancelHandler = AtomicReference<() -> Unit>() @@ -47,6 +48,7 @@ abstract class RemoteVmConnection : VmConnection() { @JvmOverloads fun open(address: InetSocketAddress, stopCondition: Condition? = null): Promise { port = address.port + isLocalAddress = address.getAddress().isAnyLocalAddress() || address.getAddress().isLoopbackAddress() setState(ConnectionStatus.WAITING_FOR_CONNECTION, "Connecting to ${address.hostName}:${port}") val result = AsyncPromise() val future = ApplicationManager.getApplication().executeOnPooledThread { diff --git a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/DebuggableRunConfiguration.java b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/DebuggableRunConfiguration.java index dadad5f64b31..1fdb027a16bd 100644 --- a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/DebuggableRunConfiguration.java +++ b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/DebuggableRunConfiguration.java @@ -19,6 +19,7 @@ import com.intellij.execution.ExecutionException; import com.intellij.execution.ExecutionResult; import com.intellij.execution.configurations.RunConfiguration; import com.intellij.execution.configurations.RunProfile; +import com.intellij.execution.configurations.RunProfileState; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.util.net.NetUtils; import com.intellij.xdebugger.XDebugProcess; @@ -32,7 +33,7 @@ import java.net.InetSocketAddress; public interface DebuggableRunConfiguration extends RunConfiguration { @NotNull - default InetSocketAddress computeDebugAddress() throws ExecutionException { + default InetSocketAddress computeDebugAddress(RunProfileState state) throws ExecutionException { try { return new InetSocketAddress(InetAddress.getLoopbackAddress(), NetUtils.findAvailableSocketPort()); } diff --git a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/RemoteDebugConfiguration.java b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/RemoteDebugConfiguration.java index 3ffe0d6a022c..942a5c9b5138 100644 --- a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/RemoteDebugConfiguration.java +++ b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/RemoteDebugConfiguration.java @@ -127,7 +127,7 @@ public abstract class RemoteDebugConfiguration extends LocatableConfigurationBas @NotNull @Override - public InetSocketAddress computeDebugAddress() { + public InetSocketAddress computeDebugAddress(RunProfileState state) { if (host == null) { return new InetSocketAddress(InetAddress.getLoopbackAddress(), port); }