diff options
Diffstat (limited to 'platform/util/src/com/intellij/util/EnvironmentUtil.java')
-rw-r--r-- | platform/util/src/com/intellij/util/EnvironmentUtil.java | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/platform/util/src/com/intellij/util/EnvironmentUtil.java b/platform/util/src/com/intellij/util/EnvironmentUtil.java index 1d7016460f1e..19961bfc0b89 100644 --- a/platform/util/src/com/intellij/util/EnvironmentUtil.java +++ b/platform/util/src/com/intellij/util/EnvironmentUtil.java @@ -255,6 +255,24 @@ public class EnvironmentUtil { return getEnvironmentMap(); } + public static void inlineParentOccurrences(@NotNull Map<String, String> envs) { + Map<String, String> parentParams = new HashMap<String, String>(System.getenv()); + for (Map.Entry<String, String> entry : envs.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + if (value != null) { + String parentVal = parentParams.get(key); + if (parentVal != null && containsEnvKeySubstitution(key, value)) { + envs.put(key, value.replace("$" + key + "$", parentVal)); + } + } + } + } + + private static boolean containsEnvKeySubstitution(final String envKey, final String val) { + return ArrayUtil.find(val.split(File.pathSeparator), "$" + envKey + "$") != -1; + } + @TestOnly static Map<String, String> testLoader() { try { |