Class Shell
- java.lang.Object
-
- org.apache.maven.shared.utils.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.CloneableClass that abstracts the Shell functionality, with subclasses for shells that behave particularly, likecommand.comcmd.exe
-
-
Field Summary
Fields Modifier and Type Field Description private charargQuoteDelimiterprivate static char[]DEFAULT_QUOTING_TRIGGER_CHARSprivate java.lang.Stringexecutableprivate charexeQuoteDelimiterprivate booleanquotedArgumentsEnabledprivate booleanquotedExecutableEnabledprivate java.util.List<java.lang.String>shellArgsprivate java.lang.StringshellCommandprivate booleansingleQuotedArgumentEscapedprivate booleansingleQuotedExecutableEscapedprivate booleanunconditionalQuotingprivate java.lang.StringworkingDir
-
Constructor Summary
Constructors Constructor Description Shell()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Objectclone()(package private) chargetArgumentQuoteDelimiter()(package private) java.util.List<java.lang.String>getCommandLine(java.lang.String executableParameter, java.lang.String... argumentsParameter)Get the command line for the provided executable and arguments in this shell(package private) char[]getEscapeChars(boolean includeSingleQuote, boolean includeDoubleQuote)java.lang.StringgetExecutable()(package private) chargetExecutableQuoteDelimiter()(package private) java.lang.StringgetExecutionPreamble()(package private) char[]getQuotingTriggerChars()(package private) java.util.List<java.lang.String>getRawCommandLine(java.lang.String executableParameter, java.lang.String... argumentsParameter)(package private) java.lang.String[]getShellArgs()Get the shell arguments(package private) java.util.List<java.lang.String>getShellArgsList()(package private) java.lang.StringgetShellCommand()Get the command to execute the shell.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 argumentsjava.io.FilegetWorkingDirectory()(package private) java.lang.StringgetWorkingDirectoryAsString()protected booleanisDoubleQuotedArgumentEscaped()(package private) booleanisDoubleQuotedExecutableEscaped()(package private) booleanisQuotedArgumentsEnabled()(package private) booleanisQuotedExecutableEnabled()protected booleanisSingleQuotedArgumentEscaped()(package private) booleanisSingleQuotedExecutableEscaped()booleanisUnconditionalQuoting()protected java.lang.StringquoteOneItem(java.lang.String inputString, boolean isExecutable)(package private) voidsetArgumentQuoteDelimiter(char argQuoteDelimiterParameter)voidsetExecutable(java.lang.String executable)Sets the executable to run.(package private) voidsetExecutableQuoteDelimiter(char exeQuoteDelimiterParameter)voidsetQuotedArgumentsEnabled(boolean quotedArgumentsEnabled)(package private) voidsetQuotedExecutableEnabled(boolean quotedExecutableEnabled)(package private) voidsetShellArgs(java.lang.String[] shellArgs)Set the shell arguments when calling a command line (not the executable arguments) (e.g.(package private) voidsetShellCommand(java.lang.String shellCommand)Set the command to execute the shell (e.g.(package private) voidsetSingleQuotedArgumentEscaped(boolean singleQuotedArgumentEscaped)(package private) voidsetSingleQuotedExecutableEscaped(boolean singleQuotedExecutableEscaped)voidsetUnconditionalQuoting(boolean unconditionalQuoting)voidsetWorkingDirectory(java.io.File workingDirectory)Sets execution directory.voidsetWorkingDirectory(java.lang.String path)Sets execution directory.
-
-
-
Field Detail
-
DEFAULT_QUOTING_TRIGGER_CHARS
private static final char[] DEFAULT_QUOTING_TRIGGER_CHARS
-
shellCommand
private java.lang.String shellCommand
-
shellArgs
private final java.util.List<java.lang.String> shellArgs
-
quotedArgumentsEnabled
private boolean quotedArgumentsEnabled
-
unconditionalQuoting
private boolean unconditionalQuoting
-
executable
private java.lang.String executable
-
workingDir
private java.lang.String workingDir
-
quotedExecutableEnabled
private boolean quotedExecutableEnabled
-
singleQuotedArgumentEscaped
private boolean singleQuotedArgumentEscaped
-
singleQuotedExecutableEscaped
private boolean singleQuotedExecutableEscaped
-
argQuoteDelimiter
private char argQuoteDelimiter
-
exeQuoteDelimiter
private char exeQuoteDelimiter
-
-
Method Detail
-
setShellCommand
void setShellCommand(java.lang.String shellCommand)
Set the command to execute the shell (e.g. COMMAND.COM, /bin/bash,...).- Parameters:
shellCommand- the command
-
getShellCommand
java.lang.String getShellCommand()
Get the command to execute the shell.- Returns:
- the command
-
setShellArgs
void setShellArgs(java.lang.String[] shellArgs)
Set the shell arguments when calling a command line (not the executable arguments) (e.g. /X /C for CMD.EXE).- Parameters:
shellArgs- the arguments to the shell
-
getShellArgs
java.lang.String[] getShellArgs()
Get the shell arguments- Returns:
- the arguments
-
quoteOneItem
protected java.lang.String quoteOneItem(java.lang.String inputString, boolean isExecutable)
-
getCommandLine
java.util.List<java.lang.String> getCommandLine(java.lang.String executableParameter, java.lang.String... argumentsParameter)Get the command line for the provided executable and arguments in this shell- Parameters:
executableParameter- executable that the shell has to callargumentsParameter- arguments for the executable, not the shell- Returns:
- list with one String object with executable and arguments quoted as needed
-
getRawCommandLine
java.util.List<java.lang.String> getRawCommandLine(java.lang.String executableParameter, java.lang.String... argumentsParameter)- Parameters:
executableParameter- ExecutableargumentsParameter- the arguments for the executable- Returns:
- the list on command line
-
getQuotingTriggerChars
char[] getQuotingTriggerChars()
-
getExecutionPreamble
java.lang.String getExecutionPreamble()
-
getEscapeChars
char[] getEscapeChars(boolean includeSingleQuote, boolean includeDoubleQuote)
-
isDoubleQuotedArgumentEscaped
protected boolean isDoubleQuotedArgumentEscaped()
- Returns:
- false in all cases
-
isSingleQuotedArgumentEscaped
protected boolean isSingleQuotedArgumentEscaped()
- Returns:
singleQuotedArgumentEscaped
-
isDoubleQuotedExecutableEscaped
boolean isDoubleQuotedExecutableEscaped()
-
isSingleQuotedExecutableEscaped
boolean isSingleQuotedExecutableEscaped()
-
setArgumentQuoteDelimiter
void setArgumentQuoteDelimiter(char argQuoteDelimiterParameter)
- Parameters:
argQuoteDelimiterParameter-argQuoteDelimiter
-
getArgumentQuoteDelimiter
char getArgumentQuoteDelimiter()
-
setExecutableQuoteDelimiter
void setExecutableQuoteDelimiter(char exeQuoteDelimiterParameter)
- Parameters:
exeQuoteDelimiterParameter-exeQuoteDelimiter
-
getExecutableQuoteDelimiter
char getExecutableQuoteDelimiter()
-
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
java.util.List<java.lang.String> getShellArgsList()
-
setQuotedArgumentsEnabled
public void setQuotedArgumentsEnabled(boolean quotedArgumentsEnabled)
- Parameters:
quotedArgumentsEnabled-quotedArgumentsEnabled
-
isQuotedArgumentsEnabled
boolean isQuotedArgumentsEnabled()
-
setQuotedExecutableEnabled
void setQuotedExecutableEnabled(boolean quotedExecutableEnabled)
-
isQuotedExecutableEnabled
boolean isQuotedExecutableEnabled()
-
setExecutable
public void setExecutable(java.lang.String executable)
Sets the executable to run.- Parameters:
executable- The executable.
-
getExecutable
public java.lang.String getExecutable()
- Returns:
- The executable.
-
setWorkingDirectory
public void setWorkingDirectory(java.lang.String path)
Sets execution directory.- Parameters:
path- The path which should be used as working directory.
-
setWorkingDirectory
public void setWorkingDirectory(java.io.File workingDirectory)
Sets execution directory.- Parameters:
workingDirectory- the working directory
-
getWorkingDirectory
public java.io.File getWorkingDirectory()
- Returns:
- the working directory
-
getWorkingDirectoryAsString
java.lang.String getWorkingDirectoryAsString()
-
clone
public java.lang.Object clone()
- Overrides:
clonein classjava.lang.Object
-
setSingleQuotedArgumentEscaped
void setSingleQuotedArgumentEscaped(boolean singleQuotedArgumentEscaped)
-
setSingleQuotedExecutableEscaped
void setSingleQuotedExecutableEscaped(boolean singleQuotedExecutableEscaped)
-
isUnconditionalQuoting
public boolean isUnconditionalQuoting()
-
setUnconditionalQuoting
public void setUnconditionalQuoting(boolean unconditionalQuoting)
-
-