fix(self-update): fix windows self-update reporting failure on successful self-update (#1452)

This commit is contained in:
Bodebojo
2025-11-10 17:04:03 +01:00
committed by GitHub
parent 17d715479a
commit 051784ac0d
4 changed files with 6 additions and 33 deletions

View File

@@ -1062,14 +1062,6 @@ _version: 2
zh_CN: "模拟运行"
zh_TW: "模擬執行"
de: "Testlauf"
"Topgrade Upgraded":
en: "Topgrade Upgraded"
lt: "Topgrade atnaujintas"
es: "Topgrade Actualizado"
fr: "Topgrade mis à jour"
zh_CN: "已升级 Topgrade"
zh_TW: "已更新 Topgrade"
de: "Topgrade aktualisiert"
# Summary texts
"OK":

View File

@@ -116,14 +116,3 @@ impl Display for SkipStep {
write!(f, "{}", self.0)
}
}
#[cfg(all(windows, feature = "self-update"))]
#[derive(Error, Debug)]
pub struct Upgraded(pub ExitStatus);
#[cfg(all(windows, feature = "self-update"))]
impl Display for Upgraded {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", t!("Topgrade Upgraded"))
}
}

View File

@@ -23,8 +23,6 @@ use tracing::debug;
use self::config::{CommandLineArgs, Config};
use self::error::StepFailed;
#[cfg(all(windows, feature = "self-update"))]
use self::error::Upgraded;
use self::runner::StepResult;
#[allow(clippy::wildcard_imports)]
use self::steps::{remote::*, *};
@@ -335,13 +333,6 @@ fn main() {
exit(0);
}
Err(error) => {
#[cfg(all(windows, feature = "self-update"))]
{
if let Some(Upgraded(status)) = error.downcast_ref::<Upgraded>() {
exit(status.code().unwrap());
}
}
let skip_print = (error.downcast_ref::<StepFailed>().is_some())
|| (error
.downcast_ref::<io::Error>()

View File

@@ -1,18 +1,19 @@
use std::env;
#[cfg(unix)]
use std::os::unix::process::CommandExt as _;
#[cfg(windows)]
use std::process::exit;
use std::process::Command;
use crate::step::Step;
use color_eyre::eyre::{bail, Result};
#[cfg(unix)]
use color_eyre::eyre::bail;
use color_eyre::eyre::Result;
use rust_i18n::t;
use self_update_crate::backends::github::Update;
use self_update_crate::update::UpdateStatus;
use super::terminal::{print_info, print_separator};
#[cfg(windows)]
use crate::error::Upgraded;
use crate::execution_context::ExecutionContext;
pub fn self_update(ctx: &ExecutionContext) -> Result<()> {
@@ -63,7 +64,7 @@ pub fn self_update(ctx: &ExecutionContext) -> Result<()> {
{
#[allow(clippy::disallowed_methods)]
let status = command.status()?;
bail!(Upgraded(status));
exit(status.code().expect("This cannot return None on Windows"));
}
}
}