Skip to content

Commit 262a4b3

Browse files
author
jan
committed
sort the content of .autobuild and autobuild.cfg
For version control sorting is a good idea as it will reduce unwanted differences due to differences in sequence in these generated files
1 parent 6139a22 commit 262a4b3

2 files changed

Lines changed: 28 additions & 11 deletions

File tree

io.sloeber.autoBuild/src/io/sloeber/autoBuild/helpers/api/KeyValueTree.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
import static io.sloeber.autoBuild.helpers.api.AutoBuildConstants.*;
44

55
import java.util.AbstractMap.SimpleEntry;
6+
import java.util.ArrayList;
67
import java.io.File;
78
import java.io.IOException;
89
import java.util.LinkedHashMap;
10+
import java.util.List;
911
import java.util.Map;
1012
import java.util.Map.Entry;
1113
import org.apache.commons.io.FileUtils;
@@ -95,10 +97,10 @@ public String toString() {
9597
return getKey() + EQUAL + getValue();
9698
}
9799

98-
private String toStringLine(KeyValueTree theRoot) {
100+
private void toStringLine(KeyValueTree theRoot,List<String> output) {
99101
if ((null == getValue()) || (this == theRoot)) {
100102
// leaves without a value should not be logged
101-
return EMPTY_STRING;
103+
return ;
102104
}
103105
String seperator = EMPTY_STRING;
104106
String ret = EQUAL + getValue();
@@ -108,7 +110,7 @@ private String toStringLine(KeyValueTree theRoot) {
108110
current = current.getParent();
109111
seperator = DOT;
110112
}
111-
return ret + NEWLINE;
113+
output.add(ret);
112114
}
113115

114116
public Map<String, String> toKeyValues(boolean addParents) {
@@ -123,17 +125,21 @@ public Map<String, String> toKeyValues(String prefix) {
123125
return toKeyValues(prefix, this);
124126
}
125127

126-
public String dump() {
127-
return dump(this);
128+
public String dump() {
129+
ArrayList<String> ret=new ArrayList<>();
130+
dump(this, ret);
131+
return String.join(NEWLINE,ret);
128132
}
129133

130-
private String dump(KeyValueTree theRoot) {
134+
public void dump(List<String> output) {
135+
dump(this, output);
136+
}
131137

132-
String stringRepresentation = toStringLine(theRoot);
138+
private void dump(KeyValueTree theRoot,List<String> output) {
139+
toStringLine(theRoot,output);
133140
for (KeyValueTree node : getChildren().values()) {
134-
stringRepresentation += node.dump(theRoot);
141+
node.dump(theRoot,output);
135142
}
136-
return stringRepresentation;
137143
}
138144

139145
private Map<String, String> toKeyValues(String prefix, KeyValueTree theRoot) {

io.sloeber.autoBuild/src/io/sloeber/autoBuild/integration/AutoBuildConfigurationDescriptionProvider.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import java.io.File;
1919
import java.io.IOException;
2020
import java.nio.charset.Charset;
21+
import java.util.ArrayList;
22+
import java.util.Arrays;
2123
import java.util.Set;
2224
import org.apache.commons.io.FileUtils;
2325
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
@@ -141,7 +143,11 @@ public CConfigurationData applyConfiguration(ICConfigurationDescription cfgDescr
141143

142144
// save the project file if needed
143145
boolean needsWriting = true;
144-
String configText = keyValuePairs.dump();
146+
147+
ArrayList<String> contentLines=new ArrayList<>();
148+
keyValuePairs.dump(contentLines);
149+
contentLines.sort(null);
150+
String configText = String.join(NEWLINE,contentLines);
145151
if (projectFile.exists()) {
146152
String curConfigsText = FileUtils.readFileToString(projectFile, AUTOBUILD_CONFIG_FILE_CHARSET);
147153
needsWriting = !curConfigsText.equals(configText);
@@ -167,7 +173,11 @@ public CConfigurationData applyConfiguration(ICConfigurationDescription cfgDescr
167173

168174
// save the team file if needed
169175
needsWriting = true;
170-
String teamText = keyValuePairs.dump();
176+
ArrayList<String> teamContentLines=new ArrayList<>();
177+
keyValuePairs.dump(teamContentLines);
178+
teamContentLines.sort(null);
179+
String teamText = String.join(NEWLINE,teamContentLines);
180+
171181
if (teamText.length() < 2) {
172182
teamFile.delete(true, monitor);
173183
needsWriting = false;
@@ -188,6 +198,7 @@ public CConfigurationData applyConfiguration(ICConfigurationDescription cfgDescr
188198
return baseData;
189199
}
190200

201+
191202
@Override
192203
public CConfigurationData createConfiguration(ICConfigurationDescription cfgDescription,
193204
ICConfigurationDescription baseCfgDescription, CConfigurationData base, boolean clone,

0 commit comments

Comments
 (0)