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.
Here is my take on concurrency based on async.queue and bluedird's cancellable promises. It represents shell commands as promises, which when cancelled would kill the underlying process. It also puts commands into the queue to allow fine-grained control over concurrency models.
I've also utilized exec-sh which abstracts away cross platform command execution and stdio stream forwarding.
This PR adds
--concurrency
option with three possible concurrency model choices:kill
(default): kills unfinished process before starting a new one. Example use case: assets compilation. For example if *.sass file changes you want to kill current build process and start a new one.queue
: waits until previously started process is finished before starting a new one. Example use case: continuous rsync on file changes. If file changes during syncing you probably want to let rsync finish and run it once more after it's done.parallel
: executes subsequent commands in parallel. I believe this option is how chokidar-cli works currently.Note that this PR needs some clean up before it is ready to merge. I'll clean it up and work on tests if you like this approach.