ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jaiki...@apache.org
Subject ant-ivy git commit: IVY-1447 Add "overwriteMode" option to Ivy command line for retrieve task
Date Fri, 28 Jul 2017 13:28:57 GMT
Repository: ant-ivy
Updated Branches:
  refs/heads/master 66da0319a -> df5930892


IVY-1447 Add "overwriteMode" option to Ivy command line for retrieve task


Project: http://git-wip-us.apache.org/repos/asf/ant-ivy/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant-ivy/commit/df593089
Tree: http://git-wip-us.apache.org/repos/asf/ant-ivy/tree/df593089
Diff: http://git-wip-us.apache.org/repos/asf/ant-ivy/diff/df593089

Branch: refs/heads/master
Commit: df5930892d9c6eda392b96bdae2e7afd342f7866
Parents: 66da031
Author: Jaikiran Pai <jaikiran@apache.org>
Authored: Fri Jul 28 18:56:32 2017 +0530
Committer: Jaikiran Pai <jaikiran@apache.org>
Committed: Fri Jul 28 18:56:32 2017 +0530

----------------------------------------------------------------------
 asciidoc/release-notes.adoc            |  2 ++
 asciidoc/standalone.adoc               |  3 ++-
 src/java/org/apache/ivy/Main.java      |  7 +++++--
 test/java/org/apache/ivy/MainTest.java | 29 +++++++++++++++++++++++++++++
 4 files changed, 38 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/df593089/asciidoc/release-notes.adoc
----------------------------------------------------------------------
diff --git a/asciidoc/release-notes.adoc b/asciidoc/release-notes.adoc
index 5f541c6..cdad6e8 100644
--- a/asciidoc/release-notes.adoc
+++ b/asciidoc/release-notes.adoc
@@ -74,12 +74,14 @@ For details about the following changes, check our JIRA install at link:https://
 - IMPROVEMENT: Optimization: limit the revision numbers scanned if revision prefix is specified
(Thanks to Ernestas Vaiciukevi&#269;ius)
 - IMPROVEMENT: Update bouncycastle to 1.52 (jira:IVY-1521[]) (Thanks to Michal Srb)
 - IMPROVEMENT: `symlinkmass` option of retrieve task has been deprecated in this release
and will no longer be supported since, starting this version of Ivy, Ivy uses Java standard
API(s) for symlink management and as such doesn't spawn a process to execute symlink creation
shell commands, like it used to do eariler. The `symlinkmass` option was previously there
to launch just one single process instead of multiple processes for symlink creation. Now
with the usage of the Java standard API(s), this option no longer is relevant.
+- IMPROVEMENT: Ivy command line now supports passing `overwriteMode` option to `retrieve`
task (jira:IVY-1447[])
 
 
 - NEW: Lets ssh-based resolvers use an ~/.ssh/config file to find username/hostname/keyfile
options (Thanks to Colin Stanfill)
 - NEW: Add ivy.maven.lookup.sources and ivy.maven.lookup.javadoc variables to control the
lookup of the additional artifacts. Defaults to true, for backward compatibility (jira:IVY-1529[])
 - NEW: Add (conditional) support for SHA-256 SHA-512 and SHA-384 checksum algorithms (jira:IVY-1554[])
(Thanks to Jaikiran Pai)
 
+
 ////
  Samples :
 - NEW: bla bla bla (jira:IVY-1234[]) (Thanks to Jane Doe)

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/df593089/asciidoc/standalone.adoc
----------------------------------------------------------------------
diff --git a/asciidoc/standalone.adoc b/asciidoc/standalone.adoc
index 9ed1a2f..1f7dfb2 100644
--- a/asciidoc/standalone.adoc
+++ b/asciidoc/standalone.adoc
@@ -46,7 +46,7 @@ usage: ivy
                               use this instead of ivy file to do the rest of the
                                work with this as a dependency.
  -confs <configurations>      resolve given configurations
- -types <types>               comma separated list of accepted artifact types
+ -types <types>               accepted artifact types
  -mode <resolvemode>          the resolve mode to use
  -notransitive                do not resolve dependencies transitively
 
@@ -55,6 +55,7 @@ usage: ivy
  -ivypattern <pattern>        use given pattern to copy the ivy files
  -sync                        use sync mode for retrieve
  -symlink                     create symbolic links
+ -overwriteMode <overwriteMode> use given overwrite mode for retrieve
 
 ==== cache path options
  -cachepath <cachepathfile>   outputs a classpath consisting of all dependencies

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/df593089/src/java/org/apache/ivy/Main.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/Main.java b/src/java/org/apache/ivy/Main.java
index c1d71a7..44eacc4 100644
--- a/src/java/org/apache/ivy/Main.java
+++ b/src/java/org/apache/ivy/Main.java
@@ -81,7 +81,7 @@ public final class Main {
                     new OptionBuilder("novalidate").description(
                         "do not validate ivy files against xsd").create())
                 .addOption(
-                    new OptionBuilder("m2compatible").description("use maven2 compatibility")
+                    new OptionBuilder("m2compatible").description("use Maven 2 compatibility")
                             .create())
                 .addOption(
                     new OptionBuilder("conf").arg("settingsfile").deprecated()
@@ -134,7 +134,9 @@ public final class Main {
                     new OptionBuilder("sync").description("use sync mode for retrieve").create())
                 .addOption(
                     new OptionBuilder("symlink").description("create symbolic links").create())
-
+                .addOption(new OptionBuilder("overwriteMode").arg("overwriteMode")
+                        .description("use given overwrite mode for retrieve")
+                        .create())
                 .addCategory("cache path options")
                 .addOption(
                     new OptionBuilder("cachepath")
@@ -330,6 +332,7 @@ public final class Main {
                         .setUseOrigin(line.hasOption("useOrigin"))
                         .setDestArtifactPattern(retrievePattern)
                         .setDestIvyPattern(ivyPattern)
+                        .setOverwriteMode(line.getOptionValue("overwriteMode"))
                         .setArtifactFilter(
                             FilterHelper.getArtifactTypeFilter(line.getOptionValues("types")))
                         .setMakeSymlinks(line.hasOption("symlink"))

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/df593089/test/java/org/apache/ivy/MainTest.java
----------------------------------------------------------------------
diff --git a/test/java/org/apache/ivy/MainTest.java b/test/java/org/apache/ivy/MainTest.java
index 0219f7f..427f97c 100644
--- a/test/java/org/apache/ivy/MainTest.java
+++ b/test/java/org/apache/ivy/MainTest.java
@@ -17,6 +17,7 @@
  */
 package org.apache.ivy;
 
+import org.apache.ivy.core.retrieve.RetrieveOptions;
 import org.apache.ivy.util.CacheCleaner;
 import org.apache.ivy.util.cli.CommandLine;
 import org.apache.ivy.util.cli.ParseException;
@@ -27,6 +28,9 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
 import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
@@ -153,6 +157,31 @@ public class MainTest {
         assertTrue("jar type is missing from the parsed types argument", uniqueParsedTypes.contains("source"));
     }
 
+    /**
+     * Tests that the {@code overwriteMode} passed for the retrieve command works as expected
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testRetrieveOverwriteMode() throws Exception {
+        final String[] args = new String[]{"-settings", "test/repositories/ivysettings.xml",
"-retrieve",
+                "build/test/main/retrieve/overwrite-test/[artifact].[ext]",
+                "-overwriteMode", "different",
+                "-ivy", "test/repositories/1/org/mod1/ivys/ivy-5.0.xml"};
+        final CommandLine parsedCommand = Main.getParser().parse(args);
+        final String parsedOverwriteMode = parsedCommand.getOptionValue("overwriteMode");
+        assertEquals("Unexpected overwriteMode parsed", RetrieveOptions.OVERWRITEMODE_DIFFERENT,
parsedOverwriteMode);
+        // create a dummy file which we expect the retrieve task to overwrite
+        final Path retrieveArtifactPath = Paths.get("build/test/main/retrieve/overwrite-test/foo-bar.jar");
+        Files.createDirectories(retrieveArtifactPath.getParent());
+        Files.write(retrieveArtifactPath, new byte[0]);
+        assertEquals("Unexpected content at " + retrieveArtifactPath, 0, Files.readAllBytes(retrieveArtifactPath).length);
+        // issue the retrieve (which retrieves the org:foo-bar:2.3.4 artifact)
+        run(args);
+        // expect the existing jar to be overwritten
+        assertTrue("Content at " + retrieveArtifactPath + " was not overwritten by retrieve
task", Files.readAllBytes(retrieveArtifactPath).length > 0);
+    }
+
     private void run(String[] args) throws Exception {
         Main.run(Main.getParser(), args);
     }


Mime
View raw message