Browse Source

prefix and suffix attributes for command line arguments, PR 47365, submitted by Martin von Gagern

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@788677 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 16 years ago
parent
commit
c62e477a0b
7 changed files with 106 additions and 2 deletions
  1. +4
    -0
      WHATSNEW
  2. +11
    -0
      docs/manual/CoreTasks/javac.html
  3. +11
    -0
      docs/manual/CoreTasks/rmic.html
  4. +11
    -0
      docs/manual/OptionalTasks/javah.html
  5. +14
    -0
      docs/manual/using.html
  6. +34
    -1
      src/main/org/apache/tools/ant/types/Commandline.java
  7. +21
    -1
      src/tests/junit/org/apache/tools/ant/types/CommandlineTest.java

+ 4
- 0
WHATSNEW View File

@@ -737,6 +737,10 @@ Other changes:
* <input ...><handler type="secure" /></input> now uses previously undocumented
SecureInputHandler shipped with Ant 1.7.1.

* Command line arguments for <exec> and similar tasks can now have
optional prefix and suffix attributes.
Bugzilla Report 47365

Changes from Ant 1.7.0 TO Ant 1.7.1
=============================================



+ 11
- 0
docs/manual/CoreTasks/javac.html View File

@@ -484,6 +484,17 @@ used.</p>
<tr>
<td valign="top">path</td>
</tr>
<tr>
<td valign="top">prefix</td>
<td align="center" rowspan="2">See
<a href="../using.html#arg">Command-line Arguments</a>.
<em>Since Ant 1.8.</em></td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">suffix</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">compiler</td>
<td>Only pass the specified argument if the chosen


+ 11
- 0
docs/manual/CoreTasks/rmic.html View File

@@ -244,6 +244,17 @@ used.</p>
<tr>
<td valign="top">path</td>
</tr>
<tr>
<td valign="top">prefix</td>
<td align="center" rowspan="2">See
<a href="../using.html#arg">Command-line Arguments</a>.
<em>Since Ant 1.8.</em></td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">suffix</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">compiler</td>
<td>Only pass the specified argument if the chosen


+ 11
- 0
docs/manual/OptionalTasks/javah.html View File

@@ -143,6 +143,17 @@ only if a given compiler implementation will be used.</p>
<tr>
<td valign="top">path</td>
</tr>
<tr>
<td valign="top">prefix</td>
<td align="center" rowspan="2">See
<a href="../using.html#arg">Command-line Arguments</a>.
<em>Since Ant 1.8.</em></td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">suffix</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">implementation</td>
<td>Only pass the specified argument if the chosen compiler


+ 14
- 0
docs/manual/using.html View File

@@ -580,6 +580,20 @@ that contain space characters, nested <code>arg</code> elements can be used.</p>
<td valign="top">line</td>
<td valign="top">a space-delimited list of command-line arguments.</td>
</tr>
<tr>
<td valign="top">prefix</td>
<td valign="top">A fixed string to be placed in front of the
argument. In the case of a line broken into parts, it will be
placed in front of every part. <em>Since Ant 1.8.</em></td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">suffix</td>
<td valign="top">A fixed string to be placed immediately after the
argument. In the case of a line broken into parts, it will be
placed after every part. <em>Since Ant 1.8.</em></td>
<td valign="top" align="center">No</td>
</tr>
</table>

<p>It is highly recommended to avoid the <code>line</code> version


+ 34
- 1
src/main/org/apache/tools/ant/types/Commandline.java View File

@@ -103,6 +103,9 @@ public class Commandline implements Cloneable {

private String[] parts;

private String prefix = "";
private String suffix = "";

/**
* Set a single commandline argument.
*
@@ -158,12 +161,42 @@ public class Commandline implements Cloneable {
parts = new String[] {value.getAbsolutePath()};
}

/**
* Set the prefix to be placed in front of every part of the
* argument.
*
* @param prefix fixed prefix string.
* @since Ant 1.8.0
*/
public void setPrefix(String prefix) {
this.prefix = prefix != null ? prefix : "";
}

/**
* Set the suffix to be placed at the end of every part of the
* argument.
*
* @param suffix fixed suffix string.
* @since Ant 1.8.0
*/
public void setSuffix(String suffix) {
this.suffix = suffix != null ? suffix : "";
}

/**
* Return the constituent parts of this Argument.
* @return an array of strings.
*/
public String[] getParts() {
return parts;
if (parts == null || parts.length == 0
|| (prefix.length() == 0 && suffix.length() == 0)) {
return parts;
}
String[] fullParts = new String[parts.length];
for (int i = 0; i < fullParts.length; ++i) {
fullParts[i] = prefix + parts[i] + suffix;
}
return fullParts;
}
}



+ 21
- 1
src/tests/junit/org/apache/tools/ant/types/CommandlineTest.java View File

@@ -130,7 +130,7 @@ public class CommandlineTest extends TestCase {
assertEquals("1 \'2\"3\'", Commandline.toString(new String[] {"1", "2\"3"}));
}

public void testAwkCommand(){
public void testAwkCommand() {
Commandline c = new Commandline();
c.setExecutable("awk");
c.createArgument().setValue("'NR == 2 { print $NF }'");
@@ -140,4 +140,24 @@ public class CommandlineTest extends TestCase {
assertEquals("awk", s[0]);
assertEquals("'NR == 2 { print $NF }'", s[1]);
}

public void testPrefix() {
Commandline c = new Commandline();
Commandline.Argument a = c.createArgument();
a.setValue("foo");
a.setPrefix("-f=");
String[] s = c.getCommandline();
assertEquals(1, s.length);
assertEquals("-f=foo", s[0]);
}

public void testSuffix() {
Commandline c = new Commandline();
Commandline.Argument a = c.createArgument();
a.setValue("foo");
a.setSuffix(",1");
String[] s = c.getCommandline();
assertEquals(1, s.length);
assertEquals("foo,1", s[0]);
}
}

Loading…
Cancel
Save