Implement interrupt handling for long-running commands and archive extraction
- Added an `interrupts` module to manage Ctrl-C signals and propagate them to child processes. - Refactored archive extraction functions to check for interrupts and handle them gracefully. - Introduced `copy_interruptibly` function to allow for interruptible copying of data. - Updated various source files to utilize the new interrupt handling functions, ensuring that commands and archive extractions can be interrupted by the user. - Added tests to verify the interrupt functionality during copying and tar extraction. - Introduced a new Meson option for generating HTML CLI documentation. - Enhanced the `PackageSpec` struct to support additional Rust LTO flags.
This commit is contained in:
@@ -48,8 +48,7 @@ pub fn build(
|
||||
cmd.current_dir(src_dir);
|
||||
crate::builder::prepare_tool_command(&mut cmd, &env_vars);
|
||||
|
||||
let status = cmd
|
||||
.status()
|
||||
let status = crate::interrupts::command_status(&mut cmd)
|
||||
.with_context(|| format!("Failed to run build command: {}", cmd_str))?;
|
||||
if !status.success() {
|
||||
anyhow::bail!("Build command failed: {}", cmd_str);
|
||||
@@ -89,8 +88,7 @@ pub fn build(
|
||||
));
|
||||
crate::builder::prepare_tool_command(&mut cmd, &install_env);
|
||||
|
||||
let status = cmd
|
||||
.status()
|
||||
let status = crate::interrupts::command_status(&mut cmd)
|
||||
.with_context(|| format!("Failed to run install command: {}", cmd_str))?;
|
||||
if !status.success() {
|
||||
anyhow::bail!("Install command failed: {}", cmd_str);
|
||||
|
||||
Reference in New Issue
Block a user