import com.intellij.openapi.vfs.encoding.EncodingManager;
import com.intellij.openapi.vfs.encoding.EncodingProjectManager;
import com.intellij.util.EnvironmentUtil;
-import com.intellij.util.PlatformUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
}
if (commandLine.isPassParentEnvironment()) {
// 'parentEnv' calculation logic should be kept in sync with GeneralCommandLine.setupEnvironment
- Map<String, String> parentEnv = PlatformUtils.isAppCode() ? System.getenv() // Temporarily fix for OC-8606
- : EnvironmentUtil.getEnvironmentMap();
+ Map<String, String> parentEnv = commandLine.isPassShellEnvironmentAsParent() ? EnvironmentUtil.getEnvironmentMap() : System.getenv();
if (isLocaleDefined(parentEnv)) {
return true;
}
private File myWorkDirectory = null;
private final Map<String, String> myEnvParams = new MyTHashMap();
private boolean myPassParentEnvironment = true;
+ private boolean myPassShellEnvironmentAsParent = !PlatformUtils.isAppCode();
private final ParametersList myProgramParams = new ParametersList();
private Charset myCharset = CharsetToolkit.getDefaultSystemCharset();
private boolean myRedirectErrorStream = false;
return myPassParentEnvironment;
}
+ /**
+ * @param passShellEnvironmentAsParent if true, a shell (Terminal.app) environment will be used as parent (see {@link EnvironmentUtil#getEnvironmentMap}).
+ * Otherwise, {@link System#getenv()} will be used.
+ */
+ public void setPassShellEnvironmentAsParent(boolean passShellEnvironmentAsParent) {
+ // Temporarily fix for OC-8606
+ myPassShellEnvironmentAsParent = passShellEnvironmentAsParent;
+ }
+
+ public boolean isPassShellEnvironmentAsParent() {
+ return myPassShellEnvironmentAsParent;
+ }
+
public void addParameters(final String... parameters) {
for (String parameter : parameters) {
addParameter(parameter);
environment.clear();
if (myPassParentEnvironment) {
- environment.putAll(PlatformUtils.isAppCode() ? System.getenv() // Temporarily fix for OC-8606
- : EnvironmentUtil.getEnvironmentMap());
+ environment.putAll(myPassShellEnvironmentAsParent ? EnvironmentUtil.getEnvironmentMap() : System.getenv());
}
if (!myEnvParams.isEmpty()) {