public class ArgumentListBuilder extends Object implements Serializable, Cloneable
Constructor and Description |
---|
ArgumentListBuilder() |
ArgumentListBuilder(String... args) |
Modifier and Type | Method and Description |
---|---|
ArgumentListBuilder |
add(File f) |
ArgumentListBuilder |
add(Iterable<String> args) |
ArgumentListBuilder |
add(Object a) |
ArgumentListBuilder |
add(Object a,
boolean mask) |
ArgumentListBuilder |
add(String... args) |
ArgumentListBuilder |
add(String a) |
ArgumentListBuilder |
add(String a,
boolean mask)
Optionally hide this part of the command line from being printed to the log.
|
ArgumentListBuilder |
addKeyValuePair(String prefix,
String key,
String value,
boolean mask) |
ArgumentListBuilder |
addKeyValuePairs(String prefix,
Map<String,String> props)
Adds key value pairs as "-Dkey=value -Dkey=value ..."
-D portion is configurable as the 'prefix' parameter. |
ArgumentListBuilder |
addKeyValuePairs(String prefix,
Map<String,String> props,
Set<String> propsToMask)
Adds key value pairs as "-Dkey=value -Dkey=value ..." with masking.
|
ArgumentListBuilder |
addKeyValuePairsFromPropertyString(String prefix,
String properties,
VariableResolver<String> vr)
Adds key value pairs as "-Dkey=value -Dkey=value ..." by parsing a given string using
Properties . |
ArgumentListBuilder |
addKeyValuePairsFromPropertyString(String prefix,
String properties,
VariableResolver<String> vr,
Set<String> propsToMask)
Adds key value pairs as "-Dkey=value -Dkey=value ..." by parsing a given string using
Properties with masking. |
ArgumentListBuilder |
addMasked(Secret s) |
void |
addMasked(String string)
Add a masked argument
|
ArgumentListBuilder |
addQuoted(String a)
Adds an argument by quoting it.
|
ArgumentListBuilder |
addQuoted(String a,
boolean mask) |
ArgumentListBuilder |
addTokenized(String s)
Decomposes the given token into multiple arguments by splitting via whitespace.
|
void |
clear()
Re-initializes the arguments list.
|
ArgumentListBuilder |
clone() |
boolean |
hasMaskedArguments()
Returns true if there are any masked arguments.
|
ArgumentListBuilder |
prepend(String... args) |
String[] |
toCommandArray() |
List<String> |
toList() |
boolean[] |
toMaskArray()
Returns an array of booleans where the masked arguments are marked as true
|
String |
toString()
Debug/error message friendly output.
|
String |
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.
|
ArgumentListBuilder |
toWindowsCommand()
Calls toWindowsCommand(false)
|
ArgumentListBuilder |
toWindowsCommand(boolean escapeVars)
Wrap command in a
CMD.EXE call so we can return the exit code (ERRORLEVEL ). |
public ArgumentListBuilder()
public ArgumentListBuilder(String... args)
public ArgumentListBuilder add(Object a)
public ArgumentListBuilder add(Object a, boolean mask)
public ArgumentListBuilder add(File f)
public ArgumentListBuilder add(String a)
public ArgumentListBuilder add(String a, boolean mask)
a
- a command argumentmask
- true to suppress in output, false to print normallyLauncher.ProcStarter.masks(boolean[])
,
Launcher.maskedPrintCommandLine(List, boolean[], FilePath)
public ArgumentListBuilder prepend(String... args)
public ArgumentListBuilder addQuoted(String a)
public ArgumentListBuilder addQuoted(String a, boolean mask)
public ArgumentListBuilder add(String... args)
public ArgumentListBuilder add(@NonNull Iterable<String> args)
public ArgumentListBuilder addTokenized(String s)
public ArgumentListBuilder addKeyValuePair(String prefix, String key, String value, boolean mask)
public ArgumentListBuilder addKeyValuePairs(String prefix, Map<String,String> props)
-D
portion is configurable as the 'prefix' parameter.public ArgumentListBuilder addKeyValuePairs(String prefix, Map<String,String> props, Set<String> propsToMask)
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.public ArgumentListBuilder addKeyValuePairsFromPropertyString(String prefix, String properties, VariableResolver<String> vr) throws IOException
Properties
.prefix
- The '-D' portion of the example. Defaults to -D if null.properties
- The persisted form of Properties
. For example, "abc=def\nghi=jkl". Can be null, in which
case this method becomes no-op.vr
- VariableResolver
to resolve variables in properties string.IOException
public ArgumentListBuilder addKeyValuePairsFromPropertyString(String prefix, String properties, VariableResolver<String> vr, Set<String> propsToMask) throws IOException
Properties
with masking.prefix
- The '-D' portion of the example. Defaults to -D if null.properties
- The persisted form of Properties
. For example, "abc=def\nghi=jkl". Can be null, in which
case this method becomes no-op.vr
- VariableResolver
to resolve variables in properties string.propsToMask
- 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.IOException
public String[] toCommandArray()
public ArgumentListBuilder clone()
public void clear()
public String toStringWithQuote()
public ArgumentListBuilder toWindowsCommand(boolean escapeVars)
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"
escapeVars
- True to escape %VAR%
references; false to leave these alone
so they may be expanded when the command is runArgumentListBuilder
that runs given command through cmd.exe /C
public ArgumentListBuilder toWindowsCommand()
toWindowsCommand(boolean)
public boolean hasMaskedArguments()
public boolean[] toMaskArray()
public void addMasked(String string)
string
- the argumentpublic ArgumentListBuilder addMasked(Secret s)
Copyright © 2004–2021. All rights reserved.