From c2473a5e70f19d6acadbc8ccd86869501dcf1547 Mon Sep 17 00:00:00 2001 From: hacki11 Date: Thu, 14 Dec 2017 22:35:30 +0100 Subject: [PATCH 1/3] Add support for anttask p2.mirror 'append' https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fp2_repositorytasks.htm Append to a repository that is already there. (Default is "true") --- .../diffplug/gradle/p2/AsMavenGroupImpl.java | 1 - .../com/diffplug/gradle/p2/P2Declarative.java | 4 ++ .../java/com/diffplug/gradle/p2/P2Model.java | 8 +++ .../com/diffplug/gradle/p2/P2ModelTest.java | 55 ++++++++++++++++++- 4 files changed, 65 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/diffplug/gradle/p2/AsMavenGroupImpl.java b/src/main/java/com/diffplug/gradle/p2/AsMavenGroupImpl.java index e7cc730b9..e144d27e2 100644 --- a/src/main/java/com/diffplug/gradle/p2/AsMavenGroupImpl.java +++ b/src/main/java/com/diffplug/gradle/p2/AsMavenGroupImpl.java @@ -68,7 +68,6 @@ public void run() throws Exception { project.getLogger().lifecycle("p2AsMaven " + def.group + " is dirty."); } // else, we'll need to run our own little thing - FileMisc.cleanDir(dirP2()); FileMisc.cleanDir(dirP2Runnable()); FileMisc.cleanDir(dirMavenGroup()); diff --git a/src/main/java/com/diffplug/gradle/p2/P2Declarative.java b/src/main/java/com/diffplug/gradle/p2/P2Declarative.java index 83ae8b134..9063aeef7 100644 --- a/src/main/java/com/diffplug/gradle/p2/P2Declarative.java +++ b/src/main/java/com/diffplug/gradle/p2/P2Declarative.java @@ -78,6 +78,10 @@ default void slicingOption(String option, String value) { getP2().addSlicingOption(option, value); } + default void append(boolean append) { + getP2().setAppend(append); + } + public static void populate(P2Model model, Action action) { action.execute(new P2Declarative() { @Override diff --git a/src/main/java/com/diffplug/gradle/p2/P2Model.java b/src/main/java/com/diffplug/gradle/p2/P2Model.java index 97bc59718..9d90f2c53 100644 --- a/src/main/java/com/diffplug/gradle/p2/P2Model.java +++ b/src/main/java/com/diffplug/gradle/p2/P2Model.java @@ -63,8 +63,10 @@ public void copyFrom(P2Model other) { metadataRepos.addAll(other.metadataRepos); artifactRepos.addAll(other.artifactRepos); slicingOptions.putAll(other.slicingOptions); + append = other.append; } + private boolean append = false; private Set ius = new LinkedHashSet<>(); private Set repos = new LinkedHashSet<>(); private Set metadataRepos = new LinkedHashSet<>(); @@ -105,6 +107,7 @@ public String toString() { add.accept("metadataRepo", metadataRepos); add.accept("artifactRepo", artifactRepos); add.accept("ius", ius); + printer.print("append: " + append); }); } @@ -166,6 +169,10 @@ public void addSlicingOption(String option, String value) { slicingOptions.put(option, value); } + public void setAppend(boolean append) { + this.append = append; + } + /** * There are places where we add the local bundle pool * to act as an artifact cache. But sometimes, that cache @@ -246,6 +253,7 @@ public P2AntRunner mirrorApp(File dstFolder) { sourceNode(taskNode); Node destination = new Node(taskNode, "destination"); destination.attributes().put("location", FileMisc.asUrl(dstFolder)); + destination.attributes().put("append", append); for (String iu : ius) { Node iuNode = new Node(taskNode, "iu"); diff --git a/src/test/java/com/diffplug/gradle/p2/P2ModelTest.java b/src/test/java/com/diffplug/gradle/p2/P2ModelTest.java index b8c589cbb..0676a84d0 100644 --- a/src/test/java/com/diffplug/gradle/p2/P2ModelTest.java +++ b/src/test/java/com/diffplug/gradle/p2/P2ModelTest.java @@ -67,7 +67,7 @@ public void testMirrorAntFile() { " ", " ", " ", - " ", + " ", " ", " ", " ", @@ -95,7 +95,7 @@ public void testMirrorAntFileWithSlicingOptions() { " ", " ", " ", - " ", + " ", " ", " ", " ", @@ -103,4 +103,55 @@ public void testMirrorAntFileWithSlicingOptions() { ""); Assert.assertEquals(expected, actual); } + + @Test + public void testMirrorAntFileWithAppend() { + File dest = new File("dest"); + P2Model p2 = testData(); + p2.setAppend(true); + String actual = p2.mirrorApp(dest).completeState(); + String expected = StringPrinter.buildStringFromLines( + "### ARGS ###", + "-application org.eclipse.ant.core.antRunner", + "", + "### BUILD.XML ###", + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + ""); + Assert.assertEquals(expected, actual); + } + + @Test + public void testMirrorAntFileWithAppendDefault() { + File dest = new File("dest"); + P2Model p2 = testData(); + String actual = p2.mirrorApp(dest).completeState(); + String expected = StringPrinter.buildStringFromLines( + "### ARGS ###", + "-application org.eclipse.ant.core.antRunner", + "", + "### BUILD.XML ###", + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + ""); + Assert.assertEquals(expected, actual); + } } From 12791904e3501927e0d4b63d99b48f16c3ec01fa Mon Sep 17 00:00:00 2001 From: hacki11 Date: Thu, 14 Dec 2017 22:42:43 +0100 Subject: [PATCH 2/3] Add description for usage of append feature --- .../com/diffplug/gradle/p2/AsMavenPlugin.java | 17 +++++++++++++++++ .../java/com/diffplug/gradle/p2/P2Model.java | 1 + 2 files changed, 18 insertions(+) diff --git a/src/main/java/com/diffplug/gradle/p2/AsMavenPlugin.java b/src/main/java/com/diffplug/gradle/p2/AsMavenPlugin.java index d338d68f5..e5c4ef397 100644 --- a/src/main/java/com/diffplug/gradle/p2/AsMavenPlugin.java +++ b/src/main/java/com/diffplug/gradle/p2/AsMavenPlugin.java @@ -133,6 +133,23 @@ * * You can see all the available slicing options [here](https://wiki.eclipse.org/Equinox/p2/Ant_Tasks#SlicingOptions). * + * ## Append option + * + * You can control whether iu's should be appended to destination repository + * true: already downloaded iu's are preserved, new iu's are downloaded into the existing repo + * false: Default value for goomph, repository will be completely cleared before download new iu's + * + * * ```groovy + * p2AsMaven { + * group 'eclipse-deps', { + * ... + * append true + * } + * } + * ``` + * + * More info [here]{https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fp2_repositorytasks.htm}. + * * ## Acknowledgements and comparisons to other options * * Inspired by Andrey Hihlovskiy's [unpuzzle](https://github.com/akhikhl/unpuzzle). diff --git a/src/main/java/com/diffplug/gradle/p2/P2Model.java b/src/main/java/com/diffplug/gradle/p2/P2Model.java index 8c3ceec1b..e188bf6e0 100644 --- a/src/main/java/com/diffplug/gradle/p2/P2Model.java +++ b/src/main/java/com/diffplug/gradle/p2/P2Model.java @@ -170,6 +170,7 @@ public void addSlicingOption(String option, String value) { slicingOptions.put(option, value); } + /** https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fp2_repositorytasks.htm **/ public void setAppend(boolean append) { this.append = append; } From 1e0c31a5131946c8a573ab81d55abf5ca934311c Mon Sep 17 00:00:00 2001 From: hacki11 Date: Thu, 14 Dec 2017 22:47:32 +0100 Subject: [PATCH 3/3] destination tag can be used for append too --- src/test/java/com/diffplug/gradle/p2/P2ModelTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/diffplug/gradle/p2/P2ModelTest.java b/src/test/java/com/diffplug/gradle/p2/P2ModelTest.java index 0676a84d0..c75f56565 100644 --- a/src/test/java/com/diffplug/gradle/p2/P2ModelTest.java +++ b/src/test/java/com/diffplug/gradle/p2/P2ModelTest.java @@ -67,7 +67,7 @@ public void testMirrorAntFile() { " ", " ", " ", - " ", + " ", " ", " ", " ", @@ -95,7 +95,7 @@ public void testMirrorAntFileWithSlicingOptions() { " ", " ", " ", - " ", + " ", " ", " ", " ", @@ -122,7 +122,7 @@ public void testMirrorAntFileWithAppend() { " ", " ", " ", - " ", + " ", " ", " ", " ", @@ -147,7 +147,7 @@ public void testMirrorAntFileWithAppendDefault() { " ", " ", " ", - " ", + " ", " ", " ", " ",