Skip to content

Commit 0766bf6

Browse files
authored
Merge pull request #832 from StNekroman/master
fix
2 parents ca4f3be + 9a2c10e commit 0766bf6

1 file changed

Lines changed: 26 additions & 19 deletions

File tree

  • frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib

frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/ProcessExecutor.java

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ public ProcessExecutionException(Throwable cause) {
3131
}
3232

3333
final class ProcessExecutor {
34+
private final static String PATH_ENV_VAR = "PATH";
35+
3436
private final Map<String, String> environment;
3537
private CommandLine commandLine;
3638
private final Executor executor;
@@ -96,33 +98,38 @@ private CommandLine createCommandLine(List<String> command) {
9698
return commmandLine;
9799
}
98100

99-
private Map<String, String> createEnvironment(List<String> paths, Platform platform, Map<String, String> additionalEnvironment) {
101+
private Map<String, String> createEnvironment(final List<String> paths, final Platform platform, final Map<String, String> additionalEnvironment) {
100102
final Map<String, String> environment = new HashMap<>(System.getenv());
101-
String pathVarName = "PATH";
102-
String pathVarValue = environment.get(pathVarName);
103+
104+
if (additionalEnvironment != null) {
105+
environment.putAll(additionalEnvironment);
106+
}
107+
103108
if (platform.isWindows()) {
104-
for (Map.Entry<String, String> entry : environment.entrySet()) {
105-
if ("PATH".equalsIgnoreCase(entry.getKey())) {
106-
pathVarName = entry.getKey();
107-
pathVarValue = entry.getValue();
109+
for (final Map.Entry<String, String> entry : environment.entrySet()) {
110+
final String pathName = entry.getKey();
111+
if (PATH_ENV_VAR.equalsIgnoreCase(pathName)) {
112+
final String pathValue = entry.getValue();
113+
environment.put(pathName, extendPathVariable(pathValue, paths));
108114
}
109115
}
116+
} else {
117+
final String pathValue = environment.get(PATH_ENV_VAR);
118+
environment.put(PATH_ENV_VAR, extendPathVariable(pathValue, paths));
110119
}
111120

112-
StringBuilder pathBuilder = new StringBuilder();
113-
if (pathVarValue != null) {
114-
pathBuilder.append(pathVarValue).append(File.pathSeparator);
115-
}
116-
for (String path : paths) {
117-
pathBuilder.insert(0, File.pathSeparator).insert(0, path);
118-
}
119-
environment.put(pathVarName, pathBuilder.toString());
121+
return environment;
122+
}
120123

121-
if (additionalEnvironment != null) {
122-
environment.putAll(additionalEnvironment);
124+
private String extendPathVariable(final String existingValue, final List<String> paths) {
125+
final StringBuilder pathBuilder = new StringBuilder();
126+
for (final String path : paths) {
127+
pathBuilder.append(path).append(File.pathSeparator);
123128
}
124-
125-
return environment;
129+
if (existingValue != null) {
130+
pathBuilder.append(existingValue).append(File.pathSeparator);
131+
}
132+
return pathBuilder.toString();
126133
}
127134

128135
private Executor createExecutor(File workingDirectory, long timeoutInSeconds) {

0 commit comments

Comments
 (0)