Class Shell
- java.lang.Object
-
- org.codehaus.plexus.util.cli.shell.Shell
-
- All Implemented Interfaces:
java.lang.Cloneable
- Direct Known Subclasses:
BourneShell
,CmdShell
,CommandShell
public class Shell extends java.lang.Object implements java.lang.Cloneable
Class that abstracts the Shell functionality, with subclasses for shells that behave particularly, likecommand.com
cmd.exe
- Since:
- 1.2
-
-
Field Summary
Fields Modifier and Type Field Description private char
argQuoteDelimiter
private java.lang.String
argumentEscapePattern
private static char[]
DEFAULT_QUOTING_TRIGGER_CHARS
private boolean
doubleQuotedArgumentEscaped
private boolean
doubleQuotedExecutableEscaped
private java.lang.String
executable
private char
exeQuoteDelimiter
private boolean
quotedArgumentsEnabled
private boolean
quotedExecutableEnabled
private java.util.List<java.lang.String>
shellArgs
private java.lang.String
shellCommand
private boolean
singleQuotedArgumentEscaped
private boolean
singleQuotedExecutableEscaped
private boolean
unconditionallyQuote
private java.lang.String
workingDir
-
Constructor Summary
Constructors Constructor Description Shell()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addShellArg(java.lang.String arg)
void
clearArguments()
java.lang.Object
clone()
protected java.lang.String
getArgumentEscapePattern()
protected char
getArgumentQuoteDelimiter()
java.util.List<java.lang.String>
getCommandLine(java.lang.String executable, java.lang.String[] arguments)
Get the command line for the provided executable and arguments in this shellprotected char[]
getEscapeChars(boolean includeSingleQuote, boolean includeDoubleQuote)
java.lang.String
getExecutable()
protected char
getExecutableQuoteDelimiter()
protected java.lang.String
getExecutionPreamble()
java.util.List<java.lang.String>
getOriginalCommandLine(java.lang.String executable, java.lang.String[] arguments)
java.lang.String
getOriginalExecutable()
protected char[]
getQuotingTriggerChars()
protected java.util.List<java.lang.String>
getRawCommandLine(java.lang.String executable, java.lang.String[] arguments)
java.lang.String[]
getShellArgs()
java.util.List<java.lang.String>
getShellArgsList()
java.lang.String
getShellCommand()
Get the command to execute the shelljava.util.List<java.lang.String>
getShellCommandLine(java.lang.String[] arguments)
Get the full command line to execute, including shell command, shell arguments, executable and executable argumentsjava.io.File
getWorkingDirectory()
java.lang.String
getWorkingDirectoryAsString()
protected boolean
isDoubleQuotedArgumentEscaped()
protected boolean
isDoubleQuotedExecutableEscaped()
boolean
isQuotedArgumentsEnabled()
boolean
isQuotedExecutableEnabled()
protected boolean
isSingleQuotedArgumentEscaped()
protected boolean
isSingleQuotedExecutableEscaped()
protected java.lang.String
quoteOneItem(java.lang.String inputString, boolean isExecutable)
protected void
setArgumentEscapePattern(java.lang.String argumentEscapePattern)
protected void
setArgumentQuoteDelimiter(char argQuoteDelimiter)
protected void
setDoubleQuotedArgumentEscaped(boolean doubleQuotedArgumentEscaped)
protected void
setDoubleQuotedExecutableEscaped(boolean doubleQuotedExecutableEscaped)
void
setExecutable(java.lang.String executable)
protected void
setExecutableQuoteDelimiter(char exeQuoteDelimiter)
void
setQuotedArgumentsEnabled(boolean quotedArgumentsEnabled)
void
setQuotedExecutableEnabled(boolean quotedExecutableEnabled)
void
setShellArgs(java.lang.String[] shellArgs)
Set the shell arguments when calling a command line (not the executable arguments) (eg.void
setShellCommand(java.lang.String shellCommand)
Set the command to execute the shell (eg.protected void
setSingleQuotedArgumentEscaped(boolean singleQuotedArgumentEscaped)
protected void
setSingleQuotedExecutableEscaped(boolean singleQuotedExecutableEscaped)
void
setUnconditionalQuoting(boolean unconditionallyQuote)
Toggle unconditional quotingvoid
setWorkingDirectory(java.io.File workingDir)
void
setWorkingDirectory(java.lang.String path)
-
-
-
Field Detail
-
DEFAULT_QUOTING_TRIGGER_CHARS
private static final char[] DEFAULT_QUOTING_TRIGGER_CHARS
-
shellCommand
private java.lang.String shellCommand
-
shellArgs
private java.util.List<java.lang.String> shellArgs
-
quotedArgumentsEnabled
private boolean quotedArgumentsEnabled
-
unconditionallyQuote
private boolean unconditionallyQuote
-
executable
private java.lang.String executable
-
workingDir
private java.lang.String workingDir
-
quotedExecutableEnabled
private boolean quotedExecutableEnabled
-
doubleQuotedArgumentEscaped
private boolean doubleQuotedArgumentEscaped
-
singleQuotedArgumentEscaped
private boolean singleQuotedArgumentEscaped
-
doubleQuotedExecutableEscaped
private boolean doubleQuotedExecutableEscaped
-
singleQuotedExecutableEscaped
private boolean singleQuotedExecutableEscaped
-
argQuoteDelimiter
private char argQuoteDelimiter
-
exeQuoteDelimiter
private char exeQuoteDelimiter
-
argumentEscapePattern
private java.lang.String argumentEscapePattern
-
-
Method Detail
-
setUnconditionalQuoting
public void setUnconditionalQuoting(boolean unconditionallyQuote)
Toggle unconditional quoting- Parameters:
unconditionallyQuote
- see name
-
setShellCommand
public void setShellCommand(java.lang.String shellCommand)
Set the command to execute the shell (eg. COMMAND.COM, /bin/bash,...)- Parameters:
shellCommand
- see name
-
getShellCommand
public java.lang.String getShellCommand()
Get the command to execute the shell- Returns:
- the command
-
setShellArgs
public void setShellArgs(java.lang.String[] shellArgs)
Set the shell arguments when calling a command line (not the executable arguments) (eg. /X /C for CMD.EXE)- Parameters:
shellArgs
- see name
-
getShellArgs
public java.lang.String[] getShellArgs()
- Returns:
- the shell arguments
-
getCommandLine
public java.util.List<java.lang.String> getCommandLine(java.lang.String executable, java.lang.String[] arguments)
Get the command line for the provided executable and arguments in this shell- Parameters:
executable
- executable that the shell has to callarguments
- arguments for the executable, not the shell- Returns:
- List with one String object with executable and arguments quoted as needed
-
quoteOneItem
protected java.lang.String quoteOneItem(java.lang.String inputString, boolean isExecutable)
-
getRawCommandLine
protected java.util.List<java.lang.String> getRawCommandLine(java.lang.String executable, java.lang.String[] arguments)
-
getQuotingTriggerChars
protected char[] getQuotingTriggerChars()
-
getExecutionPreamble
protected java.lang.String getExecutionPreamble()
-
getEscapeChars
protected char[] getEscapeChars(boolean includeSingleQuote, boolean includeDoubleQuote)
-
isDoubleQuotedArgumentEscaped
protected boolean isDoubleQuotedArgumentEscaped()
-
isSingleQuotedArgumentEscaped
protected boolean isSingleQuotedArgumentEscaped()
-
isDoubleQuotedExecutableEscaped
protected boolean isDoubleQuotedExecutableEscaped()
-
isSingleQuotedExecutableEscaped
protected boolean isSingleQuotedExecutableEscaped()
-
setArgumentQuoteDelimiter
protected void setArgumentQuoteDelimiter(char argQuoteDelimiter)
-
getArgumentQuoteDelimiter
protected char getArgumentQuoteDelimiter()
-
setExecutableQuoteDelimiter
protected void setExecutableQuoteDelimiter(char exeQuoteDelimiter)
-
getExecutableQuoteDelimiter
protected char getExecutableQuoteDelimiter()
-
setArgumentEscapePattern
protected void setArgumentEscapePattern(java.lang.String argumentEscapePattern)
-
getArgumentEscapePattern
protected java.lang.String getArgumentEscapePattern()
-
getShellCommandLine
public java.util.List<java.lang.String> getShellCommandLine(java.lang.String[] arguments)
Get the full command line to execute, including shell command, shell arguments, executable and executable arguments- Parameters:
arguments
- arguments for the executable, not the shell- Returns:
- List of String objects, whose array version is suitable to be used as argument of Runtime.getRuntime().exec()
-
getShellArgsList
public java.util.List<java.lang.String> getShellArgsList()
-
addShellArg
public void addShellArg(java.lang.String arg)
-
setQuotedArgumentsEnabled
public void setQuotedArgumentsEnabled(boolean quotedArgumentsEnabled)
-
isQuotedArgumentsEnabled
public boolean isQuotedArgumentsEnabled()
-
setQuotedExecutableEnabled
public void setQuotedExecutableEnabled(boolean quotedExecutableEnabled)
-
isQuotedExecutableEnabled
public boolean isQuotedExecutableEnabled()
-
setExecutable
public void setExecutable(java.lang.String executable)
- Parameters:
executable
- Sets the executable to run.
-
getExecutable
public java.lang.String getExecutable()
-
setWorkingDirectory
public void setWorkingDirectory(java.lang.String path)
- Parameters:
path
- Sets execution directory.
-
setWorkingDirectory
public void setWorkingDirectory(java.io.File workingDir)
- Parameters:
workingDir
- Sets execution directory.
-
getWorkingDirectory
public java.io.File getWorkingDirectory()
-
getWorkingDirectoryAsString
public java.lang.String getWorkingDirectoryAsString()
-
clearArguments
public void clearArguments()
-
clone
public java.lang.Object clone()
- Overrides:
clone
in classjava.lang.Object
-
getOriginalExecutable
public java.lang.String getOriginalExecutable()
-
getOriginalCommandLine
public java.util.List<java.lang.String> getOriginalCommandLine(java.lang.String executable, java.lang.String[] arguments)
-
setDoubleQuotedArgumentEscaped
protected void setDoubleQuotedArgumentEscaped(boolean doubleQuotedArgumentEscaped)
-
setDoubleQuotedExecutableEscaped
protected void setDoubleQuotedExecutableEscaped(boolean doubleQuotedExecutableEscaped)
-
setSingleQuotedArgumentEscaped
protected void setSingleQuotedArgumentEscaped(boolean singleQuotedArgumentEscaped)
-
setSingleQuotedExecutableEscaped
protected void setSingleQuotedExecutableEscaped(boolean singleQuotedExecutableEscaped)
-
-