Skip to content

Commit 8e7b737

Browse files
authored
Merge pull request #41 from hacki11/master
Add support for anttask p2.mirror slicingOptions
2 parents 548e430 + 6529633 commit 8e7b737

File tree

3 files changed

+53
-6
lines changed

3 files changed

+53
-6
lines changed

src/main/java/com/diffplug/gradle/p2/P2Declarative.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ default void feature(String feature, String version) {
7474
getP2().addFeature(feature, version);
7575
}
7676

77+
default void slicingOption(String option, String value) {
78+
getP2().addSlicingOption(option, value);
79+
}
80+
7781
public static void populate(P2Model model, Action<P2Declarative> action) {
7882
action.execute(new P2Declarative() {
7983
@Override

src/main/java/com/diffplug/gradle/p2/P2Model.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,7 @@
1818
import java.io.File;
1919
import java.io.Serializable;
2020
import java.nio.file.Path;
21-
import java.util.ArrayList;
22-
import java.util.Arrays;
23-
import java.util.LinkedHashSet;
24-
import java.util.List;
25-
import java.util.Map;
26-
import java.util.Set;
21+
import java.util.*;
2722
import java.util.function.BiConsumer;
2823
import java.util.function.Consumer;
2924
import java.util.function.Supplier;
@@ -67,12 +62,14 @@ public void copyFrom(P2Model other) {
6762
repos.addAll(other.repos);
6863
metadataRepos.addAll(other.metadataRepos);
6964
artifactRepos.addAll(other.artifactRepos);
65+
slicingOptions.putAll(other.slicingOptions);
7066
}
7167

7268
private Set<String> ius = new LinkedHashSet<>();
7369
private Set<String> repos = new LinkedHashSet<>();
7470
private Set<String> metadataRepos = new LinkedHashSet<>();
7571
private Set<String> artifactRepos = new LinkedHashSet<>();
72+
private Map<String, String> slicingOptions = new HashMap<>();
7673

7774
/** Combines all fields for easy implementation of equals and hashCode. */
7875
private final List<Object> content = Arrays.asList(ius, repos, metadataRepos, artifactRepos);
@@ -165,6 +162,10 @@ public void addArtifactRepoBundlePool() {
165162
addArtifactRepo(GoomphCacheLocations.bundlePool());
166163
}
167164

165+
public void addSlicingOption(String option, String value) {
166+
slicingOptions.put(option, value);
167+
}
168+
168169
/**
169170
* There are places where we add the local bundle pool
170171
* to act as an artifact cache. But sometimes, that cache
@@ -257,6 +258,10 @@ public P2AntRunner mirrorApp(File dstFolder) {
257258
iuNode.attributes().put("version", iu.substring(slash + 1));
258259
}
259260
}
261+
262+
if (slicingOptions.size() > 0) {
263+
slicingOptionsNode(taskNode);
264+
}
260265
});
261266
});
262267
}
@@ -278,6 +283,15 @@ private Node sourceNode(Node parent) {
278283
return source;
279284
}
280285

286+
/** Creates an XML node for slicingOptions. */
287+
private Node slicingOptionsNode(Node parent) {
288+
Node slicingOptionsNode = new Node(parent, "slicingOptions");
289+
for (Map.Entry<String, String> option : slicingOptions.entrySet()) {
290+
slicingOptionsNode.attributes().put(option.getKey(), option.getValue());
291+
}
292+
return slicingOptionsNode;
293+
}
294+
281295
////////////////
282296
// P2DIRECTOR //
283297
////////////////

src/test/java/com/diffplug/gradle/p2/P2ModelTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,33 @@ public void testMirrorAntFile() {
7474
"</project>");
7575
Assert.assertEquals(expected, actual);
7676
}
77+
78+
@Test
79+
public void testMirrorAntFileWithSlicingOptions() {
80+
File dest = new File("dest");
81+
P2Model p2 = testData();
82+
p2.addSlicingOption("latestVersionOnly", "true");
83+
p2.addSlicingOption("platformfilter", "win32,win32,x86");
84+
p2.addSlicingOption("filter", "key=value");
85+
String actual = p2.mirrorApp(dest).completeState();
86+
String expected = StringPrinter.buildStringFromLines(
87+
"### ARGS ###",
88+
"-application org.eclipse.ant.core.antRunner",
89+
"",
90+
"### BUILD.XML ###",
91+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><project>",
92+
" <p2.mirror>",
93+
" <source>",
94+
" <repository location=\"http://p2repo\"/>",
95+
" <repository kind=\"metadata\" location=\"http://metadatarepo\"/>",
96+
" <repository kind=\"artifact\" location=\"http://artifactrepo\"/>",
97+
" </source>",
98+
" <destination location=\"" + FileMisc.asUrl(dest) + "\"/>",
99+
" <iu id=\"com.diffplug.iu\"/>",
100+
" <iu id=\"com.diffplug.otheriu\" version=\"1.0.0\"/>",
101+
" <slicingOptions filter=\"key=value\" latestVersionOnly=\"true\" platformfilter=\"win32,win32,x86\"/>",
102+
" </p2.mirror>",
103+
"</project>");
104+
Assert.assertEquals(expected, actual);
105+
}
77106
}

0 commit comments

Comments
 (0)