org.apache.tools.ant.types

Class Commandline

public class Commandline extends Object implements Cloneable

Commandline objects help handling command lines specifying processes to execute. The class can be used to define a command line as nested elements or as a helper to define a command line by an application.

<someelement>
  <acommandline executable="/executable/to/run">
    <argument value="argument 1" />
    <argument line="argument_1 argument_2 argument_3" />
    <argument value="argument 4" />
  </acommandline>
</someelement>
The element someelement must provide a method createAcommandline which returns an instance of this class.

Nested Class Summary
static classCommandline.Argument
Used for nested xml command line definitions.
classCommandline.Marker
Class to keep track of the position of an Argument.
Field Summary
protected static StringDISCLAIMER
Constructor Summary
Commandline(String toProcess)
Create a command line from a string.
Commandline()
Create an empty command line.
Method Summary
voidaddArguments(String[] line)
Append the arguments to the existing command.
voidaddArgumentsToList(ListIterator list)
Append all the arguments to the tail of a supplied list.
voidaddCommandToList(ListIterator list)
Add the entire command, including (optional) executable to a list.
voidclear()
Clear out the whole command line.
voidclearArgs()
Clear out the arguments but leave the executable in place for another operation.
Objectclone()
Generate a deep clone of the contained object.
Commandline.ArgumentcreateArgument()
Create an argument object.
Commandline.ArgumentcreateArgument(boolean insertAtStart)
Create an argument object and add it to our list of args.
Commandline.MarkercreateMarker()
Return a marker.
StringdescribeArguments()
Return a String that describes the arguments suitable for verbose output before a call to Runtime.exec(String[]).
static StringdescribeArguments(Commandline line)
Return a String that describes the arguments suitable for verbose output before a call to Runtime.exec(String[]).
static StringdescribeArguments(String[] args)
Return a String that describes the arguments suitable for verbose output before a call to Runtime.exec(String[]).
protected static StringdescribeArguments(String[] args, int offset)
Return a String that describes the arguments suitable for verbose output before a call to Runtime.exec(String[]).
StringdescribeCommand()
Return a String that describes the command and arguments suitable for verbose output before a call to Runtime.exec(String[]).
static StringdescribeCommand(Commandline line)
Return a String that describes the command and arguments suitable for verbose output before a call to Runtime.exec(String[]).
static StringdescribeCommand(String[] args)
Return a String that describes the command and arguments suitable for verbose output before a call to Runtime.exec(String[]).
String[]getArguments()
Returns all arguments defined by addLine, addValue or the argument object.
String[]getCommandline()
Return the executable and all defined arguments.
StringgetExecutable()
Get the executable.
Iteratoriterator()
Get an iterator to the arguments list.
static StringquoteArgument(String argument)
Put quotes around the given String if necessary.
voidsetExecutable(String executable)
Set the executable to run.
intsize()
Size operator.
StringtoString()
Return the command line as a string.
static StringtoString(String[] line)
Quote the parts of the given array in way that makes them usable as command line arguments.
static String[]translateCommandline(String toProcess)
Crack a command line.

Field Detail

DISCLAIMER

protected static final String DISCLAIMER

Constructor Detail

Commandline

public Commandline(String toProcess)
Create a command line from a string.

Parameters: toProcess the line: the first element becomes the executable, the rest the arguments.

Commandline

public Commandline()
Create an empty command line.

Method Detail

addArguments

public void addArguments(String[] line)
Append the arguments to the existing command.

Parameters: line an array of arguments to append.

addArgumentsToList

public void addArgumentsToList(ListIterator list)
Append all the arguments to the tail of a supplied list.

Parameters: list the list of arguments.

Since: Ant 1.6

addCommandToList

public void addCommandToList(ListIterator list)
Add the entire command, including (optional) executable to a list.

Parameters: list the list to add to.

Since: Ant 1.6

clear

public void clear()
Clear out the whole command line.

clearArgs

public void clearArgs()
Clear out the arguments but leave the executable in place for another operation.

clone

public Object clone()
Generate a deep clone of the contained object.

Returns: a clone of the contained object

createArgument

public Commandline.Argument createArgument()
Create an argument object.

Each commandline object has at most one instance of the argument class. This method calls this.createArgument(false).

Returns: the argument object.

See Also: Commandline

createArgument

public Commandline.Argument createArgument(boolean insertAtStart)
Create an argument object and add it to our list of args.

Each commandline object has at most one instance of the argument class.

Parameters: insertAtStart if true, the argument is inserted at the beginning of the list of args, otherwise it is appended.

Returns: an argument to be configured

createMarker

public Commandline.Marker createMarker()
Return a marker.

This marker can be used to locate a position on the commandline--to insert something for example--when all parameters have been set.

Returns: a marker

describeArguments

public String describeArguments()
Return a String that describes the arguments suitable for verbose output before a call to Runtime.exec(String[]).

Returns: a string that describes the arguments.

Since: Ant 1.5

describeArguments

public static String describeArguments(Commandline line)
Return a String that describes the arguments suitable for verbose output before a call to Runtime.exec(String[]).

Parameters: line the Commandline whose arguments to describe.

Returns: a string that describes the arguments.

Since: Ant 1.5

describeArguments

public static String describeArguments(String[] args)
Return a String that describes the arguments suitable for verbose output before a call to Runtime.exec(String[]).

Parameters: args the command line to describe as an array of strings.

Returns: a string that describes the arguments.

Since: Ant 1.5

describeArguments

protected static String describeArguments(String[] args, int offset)
Return a String that describes the arguments suitable for verbose output before a call to Runtime.exec(String[]).

Parameters: args the command line to describe as an array of strings. offset ignore entries before this index.

Returns: a string that describes the arguments

Since: Ant 1.5

describeCommand

public String describeCommand()
Return a String that describes the command and arguments suitable for verbose output before a call to Runtime.exec(String[]).

Returns: a string that describes the command and arguments.

Since: Ant 1.5

describeCommand

public static String describeCommand(Commandline line)
Return a String that describes the command and arguments suitable for verbose output before a call to Runtime.exec(String[]).

Parameters: line the Commandline to describe.

Returns: a string that describes the command and arguments.

Since: Ant 1.5

describeCommand

public static String describeCommand(String[] args)
Return a String that describes the command and arguments suitable for verbose output before a call to Runtime.exec(String[]).

This method assumes that the first entry in the array is the executable to run.

Parameters: args the command line to describe as an array of strings

Returns: a string that describes the command and arguments.

Since: Ant 1.5

getArguments

public String[] getArguments()
Returns all arguments defined by addLine, addValue or the argument object.

Returns: the arguments as an array of strings.

getCommandline

public String[] getCommandline()
Return the executable and all defined arguments.

Returns: the commandline as an array of strings.

getExecutable

public String getExecutable()
Get the executable.

Returns: the program to run--null if not yet set.

iterator

public Iterator iterator()
Get an iterator to the arguments list.

Returns: an Iterator.

Since: Ant 1.7

quoteArgument

public static String quoteArgument(String argument)
Put quotes around the given String if necessary.

If the argument doesn't include spaces or quotes, return it as is. If it contains double quotes, use single quotes - else surround the argument by double quotes.

Parameters: argument the argument to quote if necessary.

Returns: the quoted argument.

Throws: BuildException if the argument contains both, single and double quotes.

setExecutable

public void setExecutable(String executable)
Set the executable to run. All file separators in the string are converted to the platform specific value.

Parameters: executable the String executable name.

size

public int size()
Size operator. This actually creates the command line, so it is not a zero cost operation.

Returns: number of elements in the command, including the executable.

toString

public String toString()
Return the command line as a string.

Returns: the command line.

toString

public static String toString(String[] line)
Quote the parts of the given array in way that makes them usable as command line arguments.

Parameters: line the list of arguments to quote.

Returns: empty string for null or no command, else every argument split by spaces and quoted by quoting rules.

translateCommandline

public static String[] translateCommandline(String toProcess)
Crack a command line.

Parameters: toProcess the command line to process.

Returns: the command line broken into strings. An empty or null toProcess parameter results in a zero sized array.