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
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 Map
envVars
protected String
executable
Deprecated. Use setExecutable(String) instead.

Constructor Summary

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

Method Summary

void
addArg(Arg argument)
Adds an argument object to our list of args.
void
addArg(Arg argument, boolean insertAtStart)
Adds an argument object to our list of args.
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()
Arg
createArg()
Creates an argument object.
Arg
createArg(boolean insertAtStart)
Creates an argument object and adds it to our list of args.
Commandline.Argument
createArgument()
Deprecated. Use createArg() instead
Commandline.Argument
createArgument(boolean insertAtStart)
Deprecated. Use createArg(boolean) instead
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[]
getEnvironmentVariables()
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)
Deprecated. Use CommandLineUtils.quote(String) instead.
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(File workingDirectory)
Sets execution directory.
void
setWorkingDirectory(String path)
Sets execution directory.
int
size()
String
toString()
static String
toString(String[] line)
Deprecated. Use CommandLineUtils.toString(String[]) instead.
static String[]
translateCommandline(String toProcess)
Deprecated. Use CommandLineUtils.translateCommandline(String) instead.

Field Details

OS_NAME

protected static final String OS_NAME

WINDOWS

protected static final String WINDOWS

arguments

protected Vector arguments

envVars

protected Map envVars

executable

protected String executable

Deprecated. Use setExecutable(String) instead.

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 -

Commandline

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

Commandline

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

Method Details

addArg

public void addArg(Arg argument)
Adds an argument object to our list of args.

addArg

public void addArg(Arg argument,
                   boolean insertAtStart)
Adds an argument object to our list of args.
Parameters:
insertAtStart - if true, the argument is inserted at the beginning of the list of args, otherwise it is appended.

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

createArg

public Arg createArg()
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.

createArg

public Arg createArg(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.

createArgument

public Commandline.Argument createArgument()

Deprecated. Use createArg() instead

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)

Deprecated. Use createArg(boolean) instead

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.

getEnvironmentVariables

public String[] getEnvironmentVariables()
            throws CommandLineException
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

Deprecated. Use CommandLineUtils.quote(String) instead.


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(File workingDirectory)
Sets execution directory.

setWorkingDirectory

public void setWorkingDirectory(String path)
Sets execution directory.

size

public int size()

toString

public String toString()

toString

public static String toString(String[] line)

Deprecated. Use CommandLineUtils.toString(String[]) instead.


translateCommandline

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

Deprecated. Use CommandLineUtils.translateCommandline(String) instead.