java.lang.Object
org.apache.maven.shared.utils.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, like
  • command.com
  • cmd.exe
  • Field Details

    • DEFAULT_QUOTING_TRIGGER_CHARS

      private static final char[] DEFAULT_QUOTING_TRIGGER_CHARS
    • shellCommand

      private String shellCommand
    • shellArgs

      private final List<String> shellArgs
    • quotedArgumentsEnabled

      private boolean quotedArgumentsEnabled
    • unconditionalQuoting

      private boolean unconditionalQuoting
    • executable

      private String executable
    • workingDir

      private String workingDir
    • quotedExecutableEnabled

      private boolean quotedExecutableEnabled
    • singleQuotedArgumentEscaped

      private boolean singleQuotedArgumentEscaped
    • singleQuotedExecutableEscaped

      private boolean singleQuotedExecutableEscaped
    • argQuoteDelimiter

      private char argQuoteDelimiter
    • exeQuoteDelimiter

      private char exeQuoteDelimiter
  • Constructor Details

    • Shell

      public Shell()
  • Method Details

    • setShellCommand

      void setShellCommand(String shellCommand)
      Set the command to execute the shell (e.g. COMMAND.COM, /bin/bash,...).
      Parameters:
      shellCommand - the command
    • getShellCommand

      String getShellCommand()
      Get the command to execute the shell.
      Returns:
      the command
    • setShellArgs

      void setShellArgs(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

      String[] getShellArgs()
      Get the shell arguments
      Returns:
      the arguments
    • quoteOneItem

      protected String quoteOneItem(String inputString, boolean isExecutable)
    • getCommandLine

      List<String> getCommandLine(String executableParameter, String... argumentsParameter)
      Get the command line for the provided executable and arguments in this shell
      Parameters:
      executableParameter - executable that the shell has to call
      argumentsParameter - arguments for the executable, not the shell
      Returns:
      list with one String object with executable and arguments quoted as needed
    • getRawCommandLine

      List<String> getRawCommandLine(String executableParameter, String... argumentsParameter)
      Parameters:
      executableParameter - Executable
      argumentsParameter - the arguments for the executable
      Returns:
      the list on command line
    • getQuotingTriggerChars

      char[] getQuotingTriggerChars()
    • getExecutionPreamble

      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 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()
    • getShellArgsList

      List<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(String executable)
      Sets the executable to run.
      Parameters:
      executable - The executable.
    • getExecutable

      public String getExecutable()
      Returns:
      The executable.
    • setWorkingDirectory

      public void setWorkingDirectory(String path)
      Sets execution directory.
      Parameters:
      path - The path which should be used as working directory.
    • setWorkingDirectory

      public void setWorkingDirectory(File workingDirectory)
      Sets execution directory.
      Parameters:
      workingDirectory - the working directory
    • getWorkingDirectory

      public File getWorkingDirectory()
      Returns:
      the working directory
    • getWorkingDirectoryAsString

      String getWorkingDirectoryAsString()
    • clone

      public Object clone()
      Overrides:
      clone in class Object
    • setSingleQuotedArgumentEscaped

      void setSingleQuotedArgumentEscaped(boolean singleQuotedArgumentEscaped)
    • setSingleQuotedExecutableEscaped

      void setSingleQuotedExecutableEscaped(boolean singleQuotedExecutableEscaped)
    • isUnconditionalQuoting

      public boolean isUnconditionalQuoting()
    • setUnconditionalQuoting

      public void setUnconditionalQuoting(boolean unconditionalQuoting)