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.
Encapsulate process control for quire-cli subprocesses.
Purpose
Implement graceful shutdown handling for CLI subprocesses (Eleventy, Paged.js, PrinceXML) when a user presses Ctrl-C or the process receives termination signals. Previously, subprocesses would be orphaned on signal, leaving resources unreleased and requiring users to force-quit or kill the process by other means.
The ProcessManager module (
lib/process/manager.js) exports a sharedAbortSignalfor automatic subprocess cancellation viaexecaand a registry for cleanup handlers. Hung cleanup handlers are terminated by a 5 second timeout and sending Ctrl-C signal a second time will force exit a process before the timeout.Architecture
For simplicty, the Process Manager is used through a direct import pattern; each module manages its own integration. Signal handlers are registered in
bin/cli.js, the CLI entry point.