Wrap arguments in quotes when spawning custom integrations on Windows #19237
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #19218
Description
After the changes in #19224 , the quotes entered by the user are preserved until the very last moment, right before spawning the custom shell/editor, when the list of arguments is parsed into an array of strings.
When this happens, the strings in this array don't have quotes added by the user. For example:
-p "Git Bash" -d %TARGET_PATH"
is converted to
['-p', 'Git Bash', '-d', '%TARGET_PATH']
This is the expected behavior, however
spawn
behavior whenshell: true
option is present will make the spawned process to receive the parameters as if they were split by spaces again:['-p', 'Git', 'Bash', '-d', '%TARGET_PATH']
Which is wrong...
This PR adds a "safe" wrapper around
spawn
that adds the quotes to every parameter (and to the command) on Windows whenshell: true
is present.Release notes
Notes: [Fixed] Arguments with spaces are passed correctly to custom editors or shells on Windows