Add context to last critical io error

and remove generic critical io error enum variant
This commit is contained in:
Félix Saparelli 2022-01-16 19:55:57 +13:00
parent bc0fe6be70
commit 2ea62aec6a
No known key found for this signature in database
GPG Key ID: B948C4BAE44FC474
2 changed files with 4 additions and 7 deletions

View File

@ -24,12 +24,7 @@ pub enum CriticalError {
#[diagnostic(code(watchexec::critical::external))]
External(#[from] Box<dyn std::error::Error + Send + Sync>),
/// A critical I/O error occurred (generic).
#[error("io(unspecified): {0}")]
#[diagnostic(code(watchexec::critical::io_error_generic))]
IoErrorGeneric(#[from] std::io::Error),
/// A critical I/O error occurred (specific).
/// A critical I/O error occurred.
#[error("io({about}): {err}")]
#[diagnostic(code(watchexec::critical::io_error))]
IoError {

View File

@ -106,7 +106,9 @@ async fn imp_worker(
macro_rules! listen {
($sig:ident) => {{
trace!(kind=%stringify!($sig), "listening for unix signal");
signal(SignalKind::$sig())?
signal(SignalKind::$sig()).map_err(|err| CriticalError::IoError {
about: concat!("setting ", stringify!($sig), " signal listener"), err
})?
}}
}