org.codehaus.plexus.util.cli

Class Commandline

Implemented Interfaces:
Cloneable

public class Commandline
extends java.lang.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.

Authors:
thomas.haas@softwired-inc.com
Stefan Bodewig

Nested Class Summary

static class
Commandline.Argument
Used for nested xml command line definitions.
class
Commandline.Marker
Class to keep track of the position of an Argument.

Field Summary

protected static String
OS_NAME
protected static String
WINDOWS
protected Vector
arguments
protected Vector
envVars
protected String
executable
private boolean
newEnvironment
private long
pid
private Shell
shell
private File
workingDir

Constructor Summary

Commandline()
Create a new command line object.
Commandline(String toProcess)
Create a new command line object.

Method Summary

void
addArguments(String[] line)
void
addEnvironment(String name, String value)
Add an environment variable
void
addSystemEnvironment()
Add system environment variables
void
clear()
Clear out the whole command line.
void
clearArgs()
Clear out the arguments but leave the executable in place for another operation.
Object
clone()
Commandline.Argument
createArgument()
Creates an argument object.
Commandline.Argument
createArgument(boolean insertAtStart)
Creates an argument object and adds it to our list of args.
Commandline.Marker
createMarker()
Return a marker.
Process
execute()
Executes the command.
String[]
getArguments()
Returns all arguments defined by addLine, addValue or the argument object.
String[]
getCommandline()
Returns the executable and all defined arguments.
String[]
getCurrentEnvironment()
Return the current list of environment variables or null if user doesn't have add any variable.
String[]
getEnvironments()
Return the list of environment variables
String
getExecutable()
long
getPid()
Shell
getShell()
Get the shell to be used in this command line.
String[]
getShellCommandline()
Returns the shell, executable and all defined arguments.
Properties
getSystemEnvVars()
File
getWorkingDirectory()
static String
quoteArgument(String argument)
Put quotes around the given String if necessary.
private void
setDefaultShell()
Sets the shell or command-line interpretor for the detected operating system, and the shell arguments.
void
setExecutable(String executable)
Sets the executable to run.
void
setPid(long pid)
void
setShell(Shell shell)
Allows to set the shell to be used in this command line.
void
setWorkingDirectory(String path)
Sets execution directory.
int
size()
String
toString()
static String
toString(String[] line)
static String[]
translateCommandline(String toProcess)

Field Details

OS_NAME

protected static final String OS_NAME

WINDOWS

protected static final String WINDOWS

arguments

protected Vector arguments

envVars

protected Vector envVars

executable

protected String executable

newEnvironment

private boolean newEnvironment

pid

private long pid

shell

private Shell shell

workingDir

private File workingDir

Constructor Details

Commandline

public Commandline()
Create a new command line object. Shell is autodetected from operating system

Commandline

public Commandline(String toProcess)
Create a new command line object. Shell is autodetected from operating system
Parameters:
toProcess -

Method Details

addArguments

public void addArguments(String[] line)

addEnvironment

public void addEnvironment(String name,
                           String value)
Add an environment variable

addSystemEnvironment

public void addSystemEnvironment()
            throws Exception
Add system environment variables

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()

createArgument

public Commandline.Argument createArgument()
Creates 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.

createArgument

public Commandline.Argument createArgument(boolean insertAtStart)
Creates an argument object and adds 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.

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.


execute

public Process execute()
            throws CommandLineException
Executes the command.

getArguments

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

getCommandline

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

getCurrentEnvironment

public String[] getCurrentEnvironment()
Return the current list of environment variables or null if user doesn't have add any variable.

getEnvironments

public String[] getEnvironments()
Return the list of environment variables

getExecutable

public String getExecutable()

getPid

public long getPid()

getShell

public Shell getShell()
Get the shell to be used in this command line.
Since:
1.2

getShellCommandline

public String[] getShellCommandline()
Returns the shell, executable and all defined arguments.

getSystemEnvVars

public Properties getSystemEnvVars()
            throws Exception

getWorkingDirectory

public File getWorkingDirectory()

quoteArgument

public static String quoteArgument(String argument)
            throws CommandLineException
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.

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

setDefaultShell

private void setDefaultShell()
Sets the shell or command-line interpretor for the detected operating system, and the shell arguments.

setExecutable

public void setExecutable(String executable)
Sets the executable to run.

setPid

public void setPid(long pid)

setShell

public void setShell(Shell shell)
Allows to set the shell to be used in this command line.
Parameters:
shell -
Since:
1.2

setWorkingDirectory

public void setWorkingDirectory(String path)
Sets execution directory.

size

public int size()

toString

public String toString()

toString

public static String toString(String[] line)

translateCommandline

public static String[] translateCommandline(String toProcess)
            throws Exception