Skip to content
This repository has been archived by the owner on Apr 3, 2018. It is now read-only.

Commit

Permalink
Fix regression: not adding tool cmdDir to PATH
Browse files Browse the repository at this point in the history
  • Loading branch information
bruno-medeiros committed May 19, 2016
1 parent 5f27673 commit 0f7650f
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 11 deletions.
Expand Up @@ -36,6 +36,7 @@
import melnorme.lang.ide.core.utils.process.AbstractRunProcessTask; import melnorme.lang.ide.core.utils.process.AbstractRunProcessTask;
import melnorme.lang.ide.core.utils.process.AbstractRunProcessTask.ProcessStartHelper; import melnorme.lang.ide.core.utils.process.AbstractRunProcessTask.ProcessStartHelper;
import melnorme.lang.tooling.toolchain.ops.IToolOperationService; import melnorme.lang.tooling.toolchain.ops.IToolOperationService;
import melnorme.lang.utils.EnvUtils;
import melnorme.lang.utils.ProcessUtils; import melnorme.lang.utils.ProcessUtils;
import melnorme.lang.utils.validators.PathValidator; import melnorme.lang.utils.validators.PathValidator;
import melnorme.utilbox.collections.ArrayList2; import melnorme.utilbox.collections.ArrayList2;
Expand All @@ -46,6 +47,7 @@
import melnorme.utilbox.fields.EventSource; import melnorme.utilbox.fields.EventSource;
import melnorme.utilbox.misc.Location; import melnorme.utilbox.misc.Location;
import melnorme.utilbox.misc.MiscUtil; import melnorme.utilbox.misc.MiscUtil;
import melnorme.utilbox.misc.PathUtil;
import melnorme.utilbox.process.ExternalProcessHelper.ExternalProcessResult; import melnorme.utilbox.process.ExternalProcessHelper.ExternalProcessResult;
import melnorme.utilbox.status.StatusException; import melnorme.utilbox.status.StatusException;
import melnorme.utilbox.status.StatusLevel; import melnorme.utilbox.status.StatusLevel;
Expand Down Expand Up @@ -117,6 +119,8 @@ public ProcessBuilder createToolProcessBuilder(Indexable<String> commandLine, Lo
} }


public ProcessBuilder modifyToolProcessBuilder(ProcessBuilder pb) { public ProcessBuilder modifyToolProcessBuilder(ProcessBuilder pb) {
Path cmdExePath = PathUtil.createPathOrNull(pb.command().get(0));
EnvUtils.addCmdDirToPathEnv(cmdExePath, pb);
return pb; return pb;
} }


Expand Down
29 changes: 19 additions & 10 deletions plugin_tooling/src-lang/melnorme/lang/utils/EnvUtils.java
Expand Up @@ -22,20 +22,29 @@
public class EnvUtils { public class EnvUtils {


/** /**
* Add given cmdExePath to the PATH. This helps with certain tool issues on certain OSes, * Add the parent directory of given cmdExePath to the PATH.
* like OS X 10.10. See for example: https://github.com/GoClipse/goclipse/issues/91#issuecomment-82555504 * This helps workaround certain tool issues on some OSes like OS X.
*
* See for example: https://github.com/GoClipse/goclipse/issues/91#issuecomment-82555504
* or: https://github.com/RustDT/RustDT/issues/31
*/ */
public static void addDirToPathEnv(Path cmdExePath, ProcessBuilder pb) { public static void addCmdDirToPathEnv(Path cmdExePath, ProcessBuilder pb) {
Map<String, String> environment = pb.environment(); Location cmdLoc = Location.createValidOrNull(cmdExePath);

if(cmdLoc == null) {
String pathEnv = getVarFromEnvMap(environment, "PATH"); return;

}
Path cmdDir = cmdExePath.getParent(); cmdLoc = cmdLoc.getParent();
if(cmdDir == null || !cmdDir.isAbsolute()) { if(cmdLoc == null) {
return; return;
} }
addLocationToPathEnv(cmdLoc, pb);
}

public static void addLocationToPathEnv(Location dirLoc, ProcessBuilder pb) {
Map<String, String> environment = pb.environment();


String newPathEnv = cmdDir.toString() + File.pathSeparator + StringUtil.nullAsEmpty(pathEnv); String pathEnv = getVarFromEnvMap(environment, "PATH");
String newPathEnv = dirLoc.toString() + File.pathSeparator + StringUtil.nullAsEmpty(pathEnv);


putVarInEnvMap(environment, "PATH", newPathEnv); putVarInEnvMap(environment, "PATH", newPathEnv);
} }
Expand Down
Expand Up @@ -50,7 +50,7 @@ public static ProcessBuilder createProcessBuilder(Path cmdExePath, Location work
ProcessBuilder pb = createProcessBuilder(cmdExePath, workingDir, arguments); ProcessBuilder pb = createProcessBuilder(cmdExePath, workingDir, arguments);


if(addCmdDirToPath) { if(addCmdDirToPath) {
EnvUtils.addDirToPathEnv(cmdExePath, pb); EnvUtils.addCmdDirToPathEnv(cmdExePath, pb);
} }


return pb; return pb;
Expand Down

0 comments on commit 0f7650f

Please sign in to comment.