Package org.codehaus.plexus.util.cli
Class Commandline
- java.lang.Object
-
- org.codehaus.plexus.util.cli.Commandline
-
- All Implemented Interfaces:
Cloneable
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>The element
<acommandline executable="/executable/to/run">
<argument value="argument 1" />
<argument line="argument_1 argument_2 argument_3" />
<argument value="argument 4" />
</acommandline>
</someelement>
someelementmust provide a methodcreateAcommandlinewhich returns an instance of this class.- Author:
- thomas.haas@softwired-inc.com, Stefan Bodewig
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classCommandline.ArgumentclassCommandline.MarkerClass to keep track of the position of an Argument.
-
Field Summary
Fields Modifier and Type Field Description protected Vector<Arg>argumentsprotected Map<String,String>envVarsprivate StringexecutableDeprecated.UsesetExecutable(String)instead.private longpidprivate Shellshellprivate FileworkingDirDeprecated.UsesetWorkingDirectory(File)orsetWorkingDirectory(String)instead.
-
Constructor Summary
Constructors Constructor Description Commandline()Create a new command line object.Commandline(String toProcess)Create a new command line object, given a command following POSIX sh quoting rulesCommandline(String toProcess, Shell shell)Create a new command line object.Commandline(Shell shell)Create a new command line object.
-
Method Summary
Modifier and Type Method Description voidaddArg(Arg argument)Adds an argument object to our list of args.voidaddArg(Arg argument, boolean insertAtStart)Adds an argument object to our list of args.voidaddArguments(String[] line)voidaddEnvironment(String name, String value)Add an environment variablevoidaddSystemEnvironment()Add system environment variablesvoidclear()Clear out the whole command line.voidclearArgs()Clear out the arguments but leave the executable in place for another operation.Objectclone()ArgcreateArg()Creates an argument object.ArgcreateArg(boolean insertAtStart)Creates an argument object and adds it to our list of args.Commandline.ArgumentcreateArgument()Deprecated.UsecreateArg()insteadCommandline.ArgumentcreateArgument(boolean insertAtStart)Deprecated.UsecreateArg(boolean)insteadCommandline.MarkercreateMarker()Return a marker.Processexecute()Executes the command.String[]getArguments()Returns all arguments defined byaddLine,addValueor the argument object.String[]getCommandline()Returns the executable and all defined arguments.String[]getEnvironmentVariables()Return the list of environment variablesStringgetExecutable()Return an executable name, quoted for shell use.StringgetLiteralExecutable()longgetPid()ShellgetShell()Get the shell to be used in this command line.String[]getShellCommandline()Returns the shell, executable and all defined arguments.PropertiesgetSystemEnvVars()FilegetWorkingDirectory()static StringquoteArgument(String argument)Deprecated.UseCommandLineUtils.quote(String)instead.private voidsetDefaultShell()Sets the shell or command-line interpretor for the detected operating system, and the shell arguments.voidsetExecutable(String executable)Sets the executable to run.voidsetPid(long pid)voidsetShell(Shell shell)Allows to set the shell to be used in this command line.voidsetWorkingDirectory(File workingDirectory)Sets execution directory.voidsetWorkingDirectory(String path)Sets execution directory.intsize()StringtoString()static StringtoString(String[] line)Deprecated.UseCommandLineUtils.toString(String[])instead.static String[]translateCommandline(String toProcess)Deprecated.UseCommandLineUtils.translateCommandline(String)instead.private voidverifyShellState()Deprecated.Remove once backward compat with plexus-utils <= 1.4 is no longer a consideration
-
-
-
Field Detail
-
pid
private long pid
-
shell
private Shell shell
-
executable
private String executable
Deprecated.UsesetExecutable(String)instead.
-
workingDir
private File workingDir
Deprecated.UsesetWorkingDirectory(File)orsetWorkingDirectory(String)instead.
-
-
Constructor Detail
-
Commandline
public Commandline(String toProcess, Shell shell)
Create a new command line object. Shell is autodetected from operating system Shell usage is only desirable when generating code for remote execution.- Parameters:
toProcess-
-
Commandline
public Commandline(Shell shell)
Create a new command line object. Shell is autodetected from operating system Shell usage is only desirable when generating code for remote execution.
-
Commandline
public Commandline(String toProcess)
Create a new command line object, given a command following POSIX sh quoting rules- Parameters:
toProcess-
-
Commandline
public Commandline()
Create a new command line object.
-
-
Method Detail
-
getPid
public long getPid()
-
setPid
public void setPid(long pid)
-
setDefaultShell
private void setDefaultShell()
Sets the shell or command-line interpretor for the detected operating system, and the shell arguments.
-
createArgument
public Commandline.Argument createArgument()
Deprecated.UsecreateArg()insteadCreates 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:
createArgument(boolean)
-
createArgument
public Commandline.Argument createArgument(boolean insertAtStart)
Deprecated.UsecreateArg(boolean)insteadCreates 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.
-
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.
- See Also:
createArgument(boolean)
-
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.
-
addArg
public void addArg(Arg argument)
Adds an argument object to our list of args.- Parameters:
argument- the argument object.- See Also:
addArg(Arg,boolean)
-
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.
-
setExecutable
public void setExecutable(String executable)
Sets the executable to run.
-
getLiteralExecutable
public String getLiteralExecutable()
- Returns:
- Executable to be run, as a literal string (no shell quoting/munging)
-
getExecutable
public String getExecutable()
Return an executable name, quoted for shell use. Shell usage is only desirable when generating code for remote execution.- Returns:
- Executable to be run, quoted for shell interpretation
-
addArguments
public void addArguments(String[] line)
-
addSystemEnvironment
public void addSystemEnvironment()
Add system environment variables
-
getEnvironmentVariables
public String[] getEnvironmentVariables()
Return the list of environment variables
-
getCommandline
public String[] getCommandline()
Returns the executable and all defined arguments.
-
getShellCommandline
public String[] getShellCommandline()
Returns the shell, executable and all defined arguments. Shell usage is only desirable when generating code for remote execution.
-
getArguments
public String[] getArguments()
Returns all arguments defined byaddLine,addValueor the argument object.
-
size
public int size()
-
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.
-
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.
-
setWorkingDirectory
public void setWorkingDirectory(String path)
Sets execution directory.
-
setWorkingDirectory
public void setWorkingDirectory(File workingDirectory)
Sets execution directory.
-
getWorkingDirectory
public File getWorkingDirectory()
-
execute
public Process execute() throws CommandLineException
Executes the command.- Throws:
CommandLineException- if- if the file expected to be the working directory does not exist or is not a directory.
-
If
Runtime.exec(String, String[], File)fails throwing anIOException.
-
verifyShellState
private void verifyShellState()
Deprecated.Remove once backward compat with plexus-utils <= 1.4 is no longer a consideration
-
getSystemEnvVars
public Properties getSystemEnvVars()
-
setShell
public void setShell(Shell shell)
Allows to set the shell to be used in this command line. Shell usage is only desirable when generating code for remote execution.- Parameters:
shell-- Since:
- 1.2
-
getShell
public Shell getShell()
Get the shell to be used in this command line. Shell usage is only desirable when generating code for remote execution.- Since:
- 1.2
-
translateCommandline
public static String[] translateCommandline(String toProcess) throws CommandLineException
Deprecated.UseCommandLineUtils.translateCommandline(String)instead.- Throws:
CommandLineException
-
quoteArgument
public static String quoteArgument(String argument) throws CommandLineException
Deprecated.UseCommandLineUtils.quote(String)instead.- Throws:
CommandLineException
-
toString
public static String toString(String[] line)
Deprecated.UseCommandLineUtils.toString(String[])instead.
-
-