You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by hi...@apache.org on 2012/08/29 18:28:39 UTC

svn commit: r1378633 - /ant/sandbox/antdsl/branches/import-experiment/argument-processor.patch

Author: hibou
Date: Wed Aug 29 16:28:38 2012
New Revision: 1378633

URL: http://svn.apache.org/viewvc?rev=1378633&view=rev
Log:
Update patch upon Matt suggestions

Modified:
    ant/sandbox/antdsl/branches/import-experiment/argument-processor.patch

Modified: ant/sandbox/antdsl/branches/import-experiment/argument-processor.patch
URL: http://svn.apache.org/viewvc/ant/sandbox/antdsl/branches/import-experiment/argument-processor.patch?rev=1378633&r1=1378632&r2=1378633&view=diff
==============================================================================
--- ant/sandbox/antdsl/branches/import-experiment/argument-processor.patch (original)
+++ ant/sandbox/antdsl/branches/import-experiment/argument-processor.patch Wed Aug 29 16:28:38 2012
@@ -2,7 +2,7 @@ Index: src/main/org/apache/tools/ant/Arg
 ===================================================================
 --- src/main/org/apache/tools/ant/ArgumentProcessor.java	(revision 0)
 +++ src/main/org/apache/tools/ant/ArgumentProcessor.java	(working copy)
-@@ -0,0 +1,80 @@
+@@ -0,0 +1,72 @@
 +/*
 + *  Licensed to the Apache Software Foundation (ASF) under one or more
 + *  contributor license agreements.  See the NOTICE file distributed with
@@ -22,6 +22,7 @@ Index: src/main/org/apache/tools/ant/Arg
 + */
 +package org.apache.tools.ant;
 +
++import java.io.PrintStream;
 +import java.util.List;
 +
 +/**
@@ -37,50 +38,41 @@ Index: src/main/org/apache/tools/ant/Arg
 +public interface ArgumentProcessor {
 +
 +    /**
-+     * Check that the specified argument is handled. It returns 0 if not
-+     * supported. Else it returns the number of expected arguments to read after
-+     * the current one.
++     * Read the arguments from the command line at the specified position
++     * <p>
++     * If the argument is not supported, returns -1. Else, the position of the
++     * first argument not supported.
 +     */
-+    int readArgument(String arg);
++    int readArguments(String[] args, int pos);
 +
 +    /**
-+     * If some arguments matched, this method is called after all arguments were
-+     * parsed. Returns <code>true</code> if Ant should stop there, ie the build
-+     * file not parsed and the project should not be executed.
-+     * <p>
-+     * NB: the size of the argument list might not be the expected one if the
-+     * end user doesn't have provided enough ones.
++     * If some arguments matched with {@link #readArguments(String[], int)},
++     * this method is called after all arguments were parsed. Returns
++     * <code>true</code> if Ant should stop there, ie the build file not parsed
++     * and the project should not be executed.
 +     */
 +    boolean handleArg(List<String> args);
 +
 +    /**
-+     * If some arguments matched, this method is called just before the project
-+     * being configured
-+     * <p>
-+     * NB: the size of the argument list might not be the expected one if the
-+     * end user doesn't have provided enough ones.
++     * If some arguments matched with {@link #readArguments(String[], int)},
++     * this method is called just before the project being configured
 +     */
 +    void prepareConfigure(Project project, List<String> args);
 +
 +    /**
-+     * Handle the arguments, just after the project being configured. Returns
-+     * <code>true</code> if Ant should stop there, ie the build file not parsed
-+     * and the project should not be executed.
-+     * <p>
-+     * NB: the size of the argument list might not be the expected one if the
-+     * end user doesn't have provided enough ones.
++     * Handle the arguments with {@link #readArguments(String[], int)}, just
++     * after the project being configured. Returns <code>true</code> if Ant
++     * should stop there, ie the build file not parsed and the project should
++     * not be executed.
 +     */
 +    boolean handleArg(Project project, List<String> arg);
 +
 +    /**
 +     * Print the usage of the supported arguments
 +     * 
-+     * @param buffer the buffer to populate
-+     * @param lSep the line separator to use
-+     * 
 +     * @see org.apache.tools.ant.Main.printUsage()
 +     */
-+    void printUsage(StringBuffer buffer, String lSep);
++    void printUsage(PrintStream writer);
 +
 +}
 
@@ -102,10 +94,11 @@ Index: src/main/org/apache/tools/ant/Mai
 ===================================================================
 --- src/main/org/apache/tools/ant/Main.java	(revision 1376402)
 +++ src/main/org/apache/tools/ant/Main.java	(working copy)
-@@ -24,12 +24,14 @@
+@@ -24,12 +24,15 @@
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.PrintStream;
++import java.io.PrintWriter;
 +import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.Collections;
@@ -117,7 +110,7 @@ Index: src/main/org/apache/tools/ant/Mai
  import java.util.Map;
  import java.util.Map.Entry;
  import java.util.Properties;
-@@ -152,6 +154,7 @@
+@@ -152,6 +155,7 @@
       */
      private boolean proxy = false;
  
@@ -125,7 +118,7 @@ Index: src/main/org/apache/tools/ant/Mai
  
      private static final GetProperty NOPROPERTIES = new GetProperty(){
          public Object getProperty(String aName) {
-@@ -324,6 +327,8 @@
+@@ -324,6 +328,8 @@
          boolean justPrintVersion = false;
          boolean justPrintDiagnostics = false;
  
@@ -134,7 +127,7 @@ Index: src/main/org/apache/tools/ant/Mai
          for (int i = 0; i < args.length; i++) {
              String arg = args[i];
  
-@@ -399,11 +404,27 @@
+@@ -399,11 +405,29 @@
              } else if (arg.equals("-autoproxy")) {
                  proxy = true;
              } else if (arg.startsWith("-")) {
@@ -145,14 +138,16 @@ Index: src/main/org/apache/tools/ant/Mai
 -                throw new BuildException("");
 +                boolean processed = false;
 +                for (ArgumentProcessor processor : processorRegistry.getProcessors()) {
-+                    int n = processor.readArgument(arg);
-+                    if (n > 0) {
-+                        List<String> extraArgs = new ArrayList<String>();
-+                        extraArgs.add(arg);
-+                        for (int j = 1; j < n && i < args.length - 1; j++) {
-+                            extraArgs.add(args[++i]);
++                    int newI = processor.readArguments(args, i);
++                    if (newI != -1) {
++                        List<String> extraArgs = extraArguments.get(processor.getClass());
++                        if (extraArgs == null) {
++                            extraArgs = new ArrayList<String>();
++                            extraArguments.put(processor.getClass(), extraArgs);
++                        }
++                        for (; i < newI && i < args.length; i++) {
++                            extraArgs.add(args[i]);
 +                        }
-+                        extraArguments.put(processor.getClass(), extraArgs);
 +                        processed = true;
 +                        break;
 +                    }
@@ -167,7 +162,7 @@ Index: src/main/org/apache/tools/ant/Mai
              } else {
                  // if it's no other arg, it may be the target
                  targets.addElement(arg);
-@@ -726,6 +747,17 @@
+@@ -726,6 +750,17 @@
              return;
          }
  
@@ -185,7 +180,7 @@ Index: src/main/org/apache/tools/ant/Mai
          final Project project = new Project();
          project.setCoreLoader(coreLoader);
  
-@@ -781,8 +813,24 @@
+@@ -781,8 +816,24 @@
                      proxySetup.enableProxies();
                  }
  
@@ -210,18 +205,96 @@ Index: src/main/org/apache/tools/ant/Mai
                  if (projectHelp) {
                      printDescription(project);
                      printTargets(project, msgOutputLevel > Project.MSG_INFO,
-@@ -996,7 +1044,10 @@
-         msg.append("  -noclasspath           Run ant without using CLASSPATH" + lSep);
-         msg.append("  -autoproxy             Java1.5+: use the OS proxy settings"
-                 + lSep);
+@@ -954,50 +1005,45 @@
+      * Prints the usage information for this class to <code>System.out</code>.
+      */
+     private static void printUsage() {
+-        String lSep = System.getProperty("line.separator");
+-        StringBuffer msg = new StringBuffer();
+-        msg.append("ant [options] [target [target2 [target3] ...]]" + lSep);
+-        msg.append("Options: " + lSep);
+-        msg.append("  -help, -h              print this message" + lSep);
+-        msg.append("  -projecthelp, -p       print project help information" + lSep);
+-        msg.append("  -version               print the version information and exit" + lSep);
+-        msg.append("  -diagnostics           print information that might be helpful to" + lSep);
+-        msg.append("                         diagnose or report problems." + lSep);
+-        msg.append("  -quiet, -q             be extra quiet" + lSep);
+-        msg.append("  -silent, -S            print nothing but task outputs and build failures" + lSep);
+-        msg.append("  -verbose, -v           be extra verbose" + lSep);
+-        msg.append("  -debug, -d             print debugging information" + lSep);
+-        msg.append("  -emacs, -e             produce logging information without adornments"
+-                   + lSep);
+-        msg.append("  -lib <path>            specifies a path to search for jars and classes"
+-                   + lSep);
+-        msg.append("  -logfile <file>        use given file for log" + lSep);
+-        msg.append("    -l     <file>                ''" + lSep);
+-        msg.append("  -logger <classname>    the class which is to perform logging" + lSep);
+-        msg.append("  -listener <classname>  add an instance of class as a project listener"
+-                   + lSep);
+-        msg.append("  -noinput               do not allow interactive input" + lSep);
+-        msg.append("  -buildfile <file>      use given buildfile" + lSep);
+-        msg.append("    -file    <file>              ''" + lSep);
+-        msg.append("    -f       <file>              ''" + lSep);
+-        msg.append("  -D<property>=<value>   use value for given property" + lSep);
+-        msg.append("  -keep-going, -k        execute all targets that do not depend" + lSep);
+-        msg.append("                         on failed target(s)" + lSep);
+-        msg.append("  -propertyfile <name>   load all properties from file with -D" + lSep);
+-        msg.append("                         properties taking precedence" + lSep);
+-        msg.append("  -inputhandler <class>  the class which will handle input requests" + lSep);
+-        msg.append("  -find <file>           (s)earch for buildfile towards the root of" + lSep);
+-        msg.append("    -s  <file>           the filesystem and use it" + lSep);
+-        msg.append("  -nice  number          A niceness value for the main thread:" + lSep
+-                   + "                         1 (lowest) to 10 (highest); 5 is the default"
+-                   + lSep);
+-        msg.append("  -nouserlib             Run ant without using the jar files from" + lSep
+-                   + "                         ${user.home}/.ant/lib" + lSep);
+-        msg.append("  -noclasspath           Run ant without using CLASSPATH" + lSep);
+-        msg.append("  -autoproxy             Java1.5+: use the OS proxy settings"
+-                + lSep);
 -        msg.append("  -main <class>          override Ant's normal entry point");
-+        msg.append("  -main <class>          override Ant's normal entry point" + lSep);
+-        System.out.println(msg.toString());
++        System.out.println("ant [options] [target [target2 [target3] ...]]");
++        System.out.println("Options: ");
++        System.out.println("  -help, -h              print this message");
++        System.out.println("  -projecthelp, -p       print project help information");
++        System.out.println("  -version               print the version information and exit");
++        System.out.println("  -diagnostics           print information that might be helpful to");
++        System.out.println("                         diagnose or report problems.");
++        System.out.println("  -quiet, -q             be extra quiet");
++        System.out.println("  -silent, -S            print nothing but task outputs and build failures");
++        System.out.println("  -verbose, -v           be extra verbose");
++        System.out.println("  -debug, -d             print debugging information");
++        System.out.println("  -emacs, -e             produce logging information without adornments");
++        System.out.println("  -lib <path>            specifies a path to search for jars and classes");
++        System.out.println("  -logfile <file>        use given file for log");
++        System.out.println("    -l     <file>                ''");
++        System.out.println("  -logger <classname>    the class which is to perform logging");
++        System.out.println("  -listener <classname>  add an instance of class as a project listener");
++        System.out.println("  -noinput               do not allow interactive input");
++        System.out.println("  -buildfile <file>      use given buildfile");
++        System.out.println("    -file    <file>              ''");
++        System.out.println("    -f       <file>              ''");
++        System.out.println("  -D<property>=<value>   use value for given property");
++        System.out.println("  -keep-going, -k        execute all targets that do not depend");
++        System.out.println("                         on failed target(s)");
++        System.out.println("  -propertyfile <name>   load all properties from file with -D");
++        System.out.println("                         properties taking precedence");
++        System.out.println("  -inputhandler <class>  the class which will handle input requests");
++        System.out.println("  -find <file>           (s)earch for buildfile towards the root of");
++        System.out.println("    -s  <file>           the filesystem and use it");
++        System.out.println("  -nice  number          A niceness value for the main thread:"
++                + "                         1 (lowest) to 10 (highest); 5 is the default");
++        System.out.println("  -nouserlib             Run ant without using the jar files from"
++                + "                         ${user.home}/.ant/lib");
++        System.out.println("  -noclasspath           Run ant without using CLASSPATH");
++        System.out.println("  -autoproxy             Java1.5+: use the OS proxy settings");
++        System.out.println("  -main <class>          override Ant's normal entry point");
 +        for (ArgumentProcessor processor : ArgumentProcessorRegistry.getInstance().getProcessors()) {
-+            processor.printUsage(msg, lSep);
++            processor.printUsage(System.out);
 +        }
-         System.out.println(msg.toString());
      }
  
+     /**
 Index: src/main/org/apache/tools/ant/ArgumentProcessorRegistry.java
 ===================================================================
 --- src/main/org/apache/tools/ant/ArgumentProcessorRegistry.java	(revision 0)