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.Cloneable
Class that abstracts the Shell functionality, with subclases for shells that behave particularly, like
command.com
cmd.exe
-
-
Field Summary
Fields Modifier and Type Field Description private char
argQuoteDelimiter
private static char[]
DEFAULT_QUOTING_TRIGGER_CHARS
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
unconditionalQuoting
private java.lang.String
workingDir
-
Constructor Summary
Constructors Constructor Description Shell()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Object
clone()
(package private) char
getArgumentQuoteDelimiter()
(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.String
getExecutable()
(package private) char
getExecutableQuoteDelimiter()
(package private) java.lang.String
getExecutionPreamble()
(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.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()
(package private) java.lang.String
getWorkingDirectoryAsString()
protected boolean
isDoubleQuotedArgumentEscaped()
(package private) boolean
isDoubleQuotedExecutableEscaped()
(package private) boolean
isQuotedArgumentsEnabled()
(package private) boolean
isQuotedExecutableEnabled()
protected boolean
isSingleQuotedArgumentEscaped()
(package private) boolean
isSingleQuotedExecutableEscaped()
boolean
isUnconditionalQuoting()
protected java.lang.String
quoteOneItem(java.lang.String inputString, boolean isExecutable)
(package private) void
setArgumentQuoteDelimiter(char argQuoteDelimiterParameter)
void
setExecutable(java.lang.String executable)
Sets the executable to run.(package private) void
setExecutableQuoteDelimiter(char exeQuoteDelimiterParameter)
void
setQuotedArgumentsEnabled(boolean quotedArgumentsEnabled)
(package private) void
setQuotedExecutableEnabled(boolean quotedExecutableEnabled)
(package private) void
setShellArgs(java.lang.String[] shellArgs)
Set the shell arguments when calling a command line (not the executable arguments) (eg.(package private) void
setShellCommand(java.lang.String shellCommand)
Set the command to execute the shell (eg.(package private) void
setSingleQuotedArgumentEscaped(boolean singleQuotedArgumentEscaped)
(package private) void
setSingleQuotedExecutableEscaped(boolean singleQuotedExecutableEscaped)
void
setUnconditionalQuoting(boolean unconditionalQuoting)
void
setWorkingDirectory(java.io.File workingDirectory)
Sets execution directory.void
setWorkingDirectory(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 (eg. 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) (eg. /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
- Executable.argumentsParameter
- 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:
clone
in classjava.lang.Object
-
setSingleQuotedArgumentEscaped
void setSingleQuotedArgumentEscaped(boolean singleQuotedArgumentEscaped)
-
setSingleQuotedExecutableEscaped
void setSingleQuotedExecutableEscaped(boolean singleQuotedExecutableEscaped)
-
isUnconditionalQuoting
public boolean isUnconditionalQuoting()
-
setUnconditionalQuoting
public void setUnconditionalQuoting(boolean unconditionalQuoting)
-
-