Class Shell
- java.lang.Object
-
- org.codehaus.plexus.util.cli.shell.Shell
-
- All Implemented Interfaces:
Cloneable
- Direct Known Subclasses:
BourneShell
,CmdShell
,CommandShell
public class Shell extends Object implements Cloneable
Class that abstracts the Shell functionality, with subclasses for shells that behave particularly, likecommand.com
cmd.exe
- Since:
- 1.2
- Author:
- Carlos Sanchez
-
-
Constructor Summary
Constructors Constructor Description Shell()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addShellArg(String arg)
void
clearArguments()
Object
clone()
protected String
getArgumentEscapePattern()
protected char
getArgumentQuoteDelimiter()
List<String>
getCommandLine(String executable, String[] arguments)
Get the command line for the provided executable and arguments in this shellprotected char[]
getEscapeChars(boolean includeSingleQuote, boolean includeDoubleQuote)
String
getExecutable()
protected char
getExecutableQuoteDelimiter()
protected String
getExecutionPreamble()
List<String>
getOriginalCommandLine(String executable, String[] arguments)
String
getOriginalExecutable()
protected char[]
getQuotingTriggerChars()
protected List<String>
getRawCommandLine(String executable, String[] arguments)
String[]
getShellArgs()
List<String>
getShellArgsList()
String
getShellCommand()
Get the command to execute the shellList<String>
getShellCommandLine(String[] arguments)
Get the full command line to execute, including shell command, shell arguments, executable and executable argumentsFile
getWorkingDirectory()
String
getWorkingDirectoryAsString()
protected boolean
isDoubleQuotedArgumentEscaped()
protected boolean
isDoubleQuotedExecutableEscaped()
boolean
isQuotedArgumentsEnabled()
boolean
isQuotedExecutableEnabled()
protected boolean
isSingleQuotedArgumentEscaped()
protected boolean
isSingleQuotedExecutableEscaped()
protected String
quoteOneItem(String inputString, boolean isExecutable)
protected void
setArgumentEscapePattern(String argumentEscapePattern)
protected void
setArgumentQuoteDelimiter(char argQuoteDelimiter)
protected void
setDoubleQuotedArgumentEscaped(boolean doubleQuotedArgumentEscaped)
protected void
setDoubleQuotedExecutableEscaped(boolean doubleQuotedExecutableEscaped)
void
setExecutable(String executable)
protected void
setExecutableQuoteDelimiter(char exeQuoteDelimiter)
void
setQuotedArgumentsEnabled(boolean quotedArgumentsEnabled)
void
setQuotedExecutableEnabled(boolean quotedExecutableEnabled)
void
setShellArgs(String[] shellArgs)
Set the shell arguments when calling a command line (not the executable arguments) (eg.void
setShellCommand(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(File workingDir)
void
setWorkingDirectory(String path)
-
-
-
Method Detail
-
setUnconditionalQuoting
public void setUnconditionalQuoting(boolean unconditionallyQuote)
Toggle unconditional quoting- Parameters:
unconditionallyQuote
- see name
-
setShellCommand
public void setShellCommand(String shellCommand)
Set the command to execute the shell (eg. COMMAND.COM, /bin/bash,...)- Parameters:
shellCommand
- see name
-
getShellCommand
public String getShellCommand()
Get the command to execute the shell- Returns:
- the command
-
setShellArgs
public void setShellArgs(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 String[] getShellArgs()
- Returns:
- the shell arguments
-
getCommandLine
public List<String> getCommandLine(String executable, 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
-
getQuotingTriggerChars
protected char[] getQuotingTriggerChars()
-
getExecutionPreamble
protected 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(String argumentEscapePattern)
-
getArgumentEscapePattern
protected String getArgumentEscapePattern()
-
getShellCommandLine
public List<String> getShellCommandLine(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()
-
addShellArg
public void addShellArg(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(String executable)
- Parameters:
executable
- Sets the executable to run.
-
getExecutable
public String getExecutable()
-
setWorkingDirectory
public void setWorkingDirectory(String path)
- Parameters:
path
- Sets execution directory.
-
setWorkingDirectory
public void setWorkingDirectory(File workingDir)
- Parameters:
workingDir
- Sets execution directory.
-
getWorkingDirectory
public File getWorkingDirectory()
-
getWorkingDirectoryAsString
public String getWorkingDirectoryAsString()
-
clearArguments
public void clearArguments()
-
getOriginalExecutable
public String getOriginalExecutable()
-
getOriginalCommandLine
public List<String> getOriginalCommandLine(String executable, 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)
-
-