Package org.jenkinsci.utils.process
Class CommandBuilder
java.lang.Object
org.jenkinsci.utils.process.CommandBuilder
- All Implemented Interfaces:
Serializable,Cloneable
Used to build up arguments for a process invocation.
Most of the methods are for adding arguments. To simplify this, we
have all kinds of overloaded add(String) methods. These methods
are null safe, in that if null is passed as an argument they get ignored.
Configuring other parts of the process invocation isn't complete, except
pwd(File). When you find a need to add more, please add them.
Once enough details are configured, use system() or popen()
to run them. Alternatively, use build() to get a configured
ProcessBuilder and then handle the output yourself.
- Author:
- Kohsuke Kawaguchi
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionadd(CommandBuilder cmds) addAll(Collection<String> args) addKeyValuePair(String prefix, String key, String value) addKeyValuePairs(String prefix, Map<String, String> props) Adds key value pairs as "-Dkey=value -Dkey=value ..."-Dportion is configurable as the 'prefix' parameter.Adds key value pairs as "-Dkey=value -Dkey=value ..." with masking.Adds an argument by quoting it.build()voidclear()Re-initializes the arguments list.clone()booleaninthashCode()popen()Executes a process and read its output.intsystem()Executes a process and waits for that to complete.String[]toList()toString()Debug/error message friendly output.Just adds quotes around args containing spaces, but no other special characters, so this method should generally be used only for informational/logging purposes.Calls toWindowsCommand(false)toWindowsCommand(boolean escapeVars) Wrap command in a CMD.EXE call so we can return the exit code (ERRORLEVEL).
-
Field Details
-
env
-
-
Constructor Details
-
CommandBuilder
public CommandBuilder() -
CommandBuilder
-
CommandBuilder
-
-
Method Details
-
build
-
system
Executes a process and waits for that to complete. stdin/out/err will be the same with that of the calling process. See http://linux.die.net/man/3/system- Throws:
IOExceptionInterruptedException
-
popen
Executes a process and read its output. See http://linux.die.net/man/3/popen- Throws:
IOException
-
pwd
-
add
-
add
- Since:
- 1.378
-
add
-
add
-
prepend
-
addQuoted
Adds an argument by quoting it. This is necessary only in a rare circumstance, such as when adding argument for ssh and rsh. Normal process invocations don't need it, because each argument is treated as its own string and never merged into one. -
addQuoted
- Since:
- 1.378
-
add
-
add
-
add
-
addAll
-
addKeyValuePair
- Since:
- 1.378
-
addKeyValuePairs
Adds key value pairs as "-Dkey=value -Dkey=value ..."-Dportion is configurable as the 'prefix' parameter.- Since:
- 1.114
-
addKeyValuePairs
public CommandBuilder addKeyValuePairs(String prefix, Map<String, String> props, Set<String> propsToMask) Adds key value pairs as "-Dkey=value -Dkey=value ..." with masking.- Parameters:
prefix- Configures the -D portion of the example. Defaults to -D if null.props- The map of key/value pairs to addpropsToMask- Set containing key names to mark as masked in the argument list. Key names that do not exist in the set will be added unmasked.- Since:
- 1.378
-
toCommandArray
-
clone
-
clear
public void clear()Re-initializes the arguments list. -
toList
-
toStringWithQuote
Just adds quotes around args containing spaces, but no other special characters, so this method should generally be used only for informational/logging purposes. -
toWindowsCommand
Wrap command in a CMD.EXE call so we can return the exit code (ERRORLEVEL). This method takes care of escaping special characters in the command, which is needed since the command is now passed as a string to the CMD.EXE shell. This is done as follows: Wrap arguments in double quotes if they contain any of: space *?,;^&<>|" and if escapeVars is true, % followed by a letter.
When testing from command prompt, these characters also need to be prepended with a ^ character: ^&<>| -- however, invoking cmd.exe from Jenkins does not seem to require this extra escaping so it is not added by this method.
A " is prepended with another " character. Note: Windows has issues escaping some combinations of quotes and spaces. Quotes should be avoided.
If escapeVars is true, a % followed by a letter has that letter wrapped in double quotes, to avoid possible variable expansion. ie, %foo% becomes "%"f"oo%". The second % does not need special handling because it is not followed by a letter.
Example: "-Dfoo=*abc?def;ghi^jkl&mno<pqr>stu|vwx""yz%"e"nd"- Parameters:
escapeVars- True to escape %VAR% references; false to leave these alone so they may be expanded when the command is run- Returns:
- new CommandBuilder that runs given command through cmd.exe /C
- Since:
- 1.386
-
toWindowsCommand
Calls toWindowsCommand(false)- See Also:
-
toString
Debug/error message friendly output. -
equals
-
hashCode
public int hashCode()
-