From f9bef8773a71d22da44f3914506f536ccb4c2957 Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Tue, 12 Mar 2013 17:39:41 +0400 Subject: [PATCH] =?UTF-8?q?WEB-6970=20nodejs=20=E2=80=94=20detect=20npm/no?= =?UTF-8?q?de=20path=20automatically=20(brew)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PathEnvironmentVariableUtil.java | 14 +-------- .../com/intellij/util/EnvironmentUtil.java | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/platform/platform-api/src/com/intellij/execution/configurations/PathEnvironmentVariableUtil.java b/platform/platform-api/src/com/intellij/execution/configurations/PathEnvironmentVariableUtil.java index 04c16d7f0c98..9e7068c5ddb3 100644 --- a/platform/platform-api/src/com/intellij/execution/configurations/PathEnvironmentVariableUtil.java +++ b/platform/platform-api/src/com/intellij/execution/configurations/PathEnvironmentVariableUtil.java @@ -6,8 +6,6 @@ import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.EnvironmentUtil; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.text.CaseInsensitiveStringHashingStrategy; -import gnu.trove.THashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -24,19 +22,9 @@ public class PathEnvironmentVariableUtil { public static final String PATH_ENV_VAR_NAME = "PATH"; private static final Logger LOG = Logger.getInstance(PathEnvironmentVariableUtil.class); - private static final Map ENVIRONMENT_VARIABLES; private static final String FIXED_MAC_PATH_VALUE; static { - Map envVars = EnvironmentUtil.getEnvironmentProperties(); - if (SystemInfo.isWindows) { - THashMap map = new THashMap(CaseInsensitiveStringHashingStrategy.INSTANCE); - map.putAll(envVars); - ENVIRONMENT_VARIABLES = map; - } - else { - ENVIRONMENT_VARIABLES = envVars; - } String fixedPathValue = null; try { fixedPathValue = calcFixedMacPathEnvVarValue(); @@ -89,7 +77,7 @@ public class PathEnvironmentVariableUtil { @Nullable private static String getOriginalPathEnvVarValue() { - return ENVIRONMENT_VARIABLES.get(PATH_ENV_VAR_NAME); + return EnvironmentUtil.getValue(PATH_ENV_VAR_NAME); } @NotNull diff --git a/platform/util/src/com/intellij/util/EnvironmentUtil.java b/platform/util/src/com/intellij/util/EnvironmentUtil.java index 6159f5f84507..5f0841745c22 100644 --- a/platform/util/src/com/intellij/util/EnvironmentUtil.java +++ b/platform/util/src/com/intellij/util/EnvironmentUtil.java @@ -15,13 +15,31 @@ */ package com.intellij.util; +import com.intellij.openapi.util.SystemInfo; +import com.intellij.util.text.CaseInsensitiveStringHashingStrategy; +import gnu.trove.THashMap; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Collections; import java.util.Map; public class EnvironmentUtil { private static final Map ourEnvironmentProperties = Collections.unmodifiableMap(new ProcessBuilder().environment()); + private static final Map ourEnvironmentVariablesOsSpecific; + + static { + Map envVars = ourEnvironmentProperties; + if (SystemInfo.isWindows) { + THashMap map = new THashMap(CaseInsensitiveStringHashingStrategy.INSTANCE); + map.putAll(envVars); + ourEnvironmentVariablesOsSpecific = map; + } + else { + ourEnvironmentVariablesOsSpecific = envVars; + } + } private EnvironmentUtil() { } @@ -38,6 +56,19 @@ public class EnvironmentUtil { return ourEnvironmentProperties; } + /** + * Returns value for the passed environment variable name. + * The passed environment variable name is handled in a case-sensitive or case-insensitive manner depending on OS.

+ * For example, on Windows getValue("Path") will return the same result as getValue("PATH"). + * + * @param name environment variable name + * @return value of the environment variable or null if no such variable found + */ + @Nullable + public static String getValue(@NotNull String name) { + return ourEnvironmentVariablesOsSpecific.get(name); + } + public static String[] getEnvironment() { return flattenEnvironment(getEnvironmentProperties()); }