diff options
author | Roman Melnikov | 2023-12-11 14:46:29 +0100 |
---|---|---|
committer | GitHub | 2023-12-11 14:46:29 +0100 |
commit | 514fa3bc3d24fa85f338fa6a8247ca7e116ab9de (patch) | |
tree | ad52061fd1ba11a2165df409c039cb9c3175d835 | |
parent | 660180bbbeae7d60dad5a92b30858306945fd427 (diff) | |
parent | b076e35c4ac157110b894032fe3155172668cdd8 (diff) |
Merge pull request #246 from serokell/rvem/#245-return-non-zero-exit-code-for-confirmation-timeout
[#245] Return non-zero exit code in case of confirmation timeout
-rw-r--r-- | src/bin/activate.rs | 32 |
1 files changed, 9 insertions, 23 deletions
diff --git a/src/bin/activate.rs b/src/bin/activate.rs index 4017510..9cff9fa 100644 --- a/src/bin/activate.rs +++ b/src/bin/activate.rs @@ -229,6 +229,8 @@ pub enum ActivationConfirmationError { CreateConfirmFile(std::io::Error), #[error("Could not watch for activation sentinel: {0}")] Watcher(#[from] notify::Error), + #[error("Error waiting for confirmation event: {0}")] + WaitingError(#[from] DangerZoneError), } #[derive(Error, Debug)] @@ -256,7 +258,6 @@ async fn danger_zone( } pub async fn activation_confirmation( - profile_path: String, temp_path: PathBuf, confirm_timeout: u16, closure: String, @@ -302,18 +303,9 @@ pub async fn activation_confirmation( watcher.watch(&lock_path, RecursiveMode::NonRecursive)?; - if let Err(err) = danger_zone(done, confirm_timeout).await { - error!("Error waiting for confirmation event: {}", err); - - if let Err(err) = deactivate(&profile_path).await { - error!( - "Error de-activating due to another error waiting for confirmation, oh no...: {}", - err - ); - } - } - - Ok(()) + danger_zone(done, confirm_timeout) + .await + .map_err(|err| ActivationConfirmationError::WaitingError(err)) } #[derive(Error, Debug)] @@ -463,16 +455,10 @@ pub async fn activate( if magic_rollback && !boot { info!("Magic rollback is enabled, setting up confirmation hook..."); - - match activation_confirmation(profile_path.clone(), temp_path, confirm_timeout, closure) - .await - { - Ok(()) => {} - Err(err) => { - deactivate(&profile_path).await?; - return Err(ActivateError::ActivationConfirmation(err)); - } - }; + if let Err(err) = activation_confirmation(temp_path, confirm_timeout, closure).await { + deactivate(&profile_path).await?; + return Err(ActivateError::ActivationConfirmation(err)); + } } } |