refactor: replace superspawn with execa #1190
Merged
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.
Motivation and Context
Progresses apache/cordova#16 and apache/cordova#7
Description
Use
execa
for any subprocess spawning.A few notes
execa
has no equivalent ofsuperspawn
'sprintCommand
option (if set totrue
, it emits a verbose log of the command being executed). In the current state of this PR, those verbose logs are removed without a substitute.superspawn
promises resolve to the captured stdout, whileexeca
resolves to an object with more properties. In many of the cases where we spawn subprocesses, this does not matter, since we we only care about promise fulfillment.superspawn
allowed to subscribe to a running process' output by means of Q'sprogress
method. This basically directly translates to subscribing todata
events on the backing streams. So that is what we used to replace these calls. However, the existing code seems to assume that the data emitted are whole lines of output only. This is by no means guaranteed, so we addedFIXME
comments to the code.Testing