mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-24 00:33:48 +02:00
Bug 510885 Fix case where two env vars try to prepend
The env var operation processer always turned the resulting operation into a replace, even if it was two prepends. That kills the actual prepend operation. In this case, keep it as a prepend. Also fix the append case this way. Unfortunately this is still broken in other multiple operation cases, like appending then prepending. Change-Id: Ib158317f16d025a479201745159a2aa3c1335e25
This commit is contained in:
parent
18a6da0bab
commit
f810db333f
1 changed files with 24 additions and 14 deletions
|
@ -48,20 +48,30 @@ public class EnvVarOperationProcessor {
|
||||||
switch(added.getOperation()){
|
switch(added.getOperation()){
|
||||||
case IEnvironmentVariable.ENVVAR_REMOVE:
|
case IEnvironmentVariable.ENVVAR_REMOVE:
|
||||||
return new EnvironmentVariable(name,null,IEnvironmentVariable.ENVVAR_REMOVE,null);
|
return new EnvironmentVariable(name,null,IEnvironmentVariable.ENVVAR_REMOVE,null);
|
||||||
case IEnvironmentVariable.ENVVAR_APPEND:{
|
case IEnvironmentVariable.ENVVAR_APPEND: {
|
||||||
String delimiter = added.getDelimiter();
|
String delimiter = added.getDelimiter();
|
||||||
return new EnvironmentVariable(name,
|
String newValue = performAppend(initial.getValue(), added.getValue(), delimiter);
|
||||||
performAppend(initial.getValue(),added.getValue(),delimiter),
|
int op;
|
||||||
// IEnvironmentVariable.ENVVAR_APPEND,
|
if (initial.getOperation() == IEnvironmentVariable.ENVVAR_APPEND) {
|
||||||
delimiter);
|
op = IEnvironmentVariable.ENVVAR_APPEND;
|
||||||
|
} else {
|
||||||
|
// TODO should really only replace if initial is replace
|
||||||
|
op = IEnvironmentVariable.ENVVAR_REPLACE;
|
||||||
}
|
}
|
||||||
case IEnvironmentVariable.ENVVAR_PREPEND:{
|
return new EnvironmentVariable(name, newValue, op, delimiter);
|
||||||
String delimiter = added.getDelimiter();
|
}
|
||||||
return new EnvironmentVariable(name,
|
case IEnvironmentVariable.ENVVAR_PREPEND: {
|
||||||
performPrepend(initial.getValue(),added.getValue(),delimiter),
|
String delimiter = added.getDelimiter();
|
||||||
// IEnvironmentVariable.ENVVAR_PREPEND,
|
String newValue = performPrepend(initial.getValue(), added.getValue(), delimiter);
|
||||||
delimiter);
|
int op;
|
||||||
|
if (initial.getOperation() == IEnvironmentVariable.ENVVAR_PREPEND) {
|
||||||
|
op = IEnvironmentVariable.ENVVAR_PREPEND;
|
||||||
|
} else {
|
||||||
|
// TODO should really only replace if initial is replace
|
||||||
|
op = IEnvironmentVariable.ENVVAR_REPLACE;
|
||||||
}
|
}
|
||||||
|
return new EnvironmentVariable(name, newValue, op, delimiter);
|
||||||
|
}
|
||||||
case IEnvironmentVariable.ENVVAR_REPLACE:
|
case IEnvironmentVariable.ENVVAR_REPLACE:
|
||||||
default:
|
default:
|
||||||
return new EnvironmentVariable(added.getName(),added.getValue(),added.getDelimiter());
|
return new EnvironmentVariable(added.getName(),added.getValue(),added.getDelimiter());
|
||||||
|
@ -155,7 +165,7 @@ public class EnvVarOperationProcessor {
|
||||||
static public List<String> convertToList(String value, String delimiter){
|
static public List<String> convertToList(String value, String delimiter){
|
||||||
if (value == null)
|
if (value == null)
|
||||||
value = ""; //$NON-NLS-1$
|
value = ""; //$NON-NLS-1$
|
||||||
List<String> list = new ArrayList<String>();
|
List<String> list = new ArrayList<>();
|
||||||
int delLength = delimiter.length();
|
int delLength = delimiter.length();
|
||||||
int valLength = value.length();
|
int valLength = value.length();
|
||||||
|
|
||||||
|
@ -182,7 +192,7 @@ public class EnvVarOperationProcessor {
|
||||||
* removes duplicates
|
* removes duplicates
|
||||||
*/
|
*/
|
||||||
static public List<String> removeDuplicates(List<String> value, List<String> duplicates){
|
static public List<String> removeDuplicates(List<String> value, List<String> duplicates){
|
||||||
List<String> list = new ArrayList<String>();
|
List<String> list = new ArrayList<>();
|
||||||
Iterator<String> valueIter = value.iterator();
|
Iterator<String> valueIter = value.iterator();
|
||||||
while(valueIter.hasNext()){
|
while(valueIter.hasNext()){
|
||||||
String curVal = valueIter.next();
|
String curVal = valueIter.next();
|
||||||
|
|
Loading…
Add table
Reference in a new issue