feat(upgrade): implement in-place self-upgrade command and bump version to v0.6.0

This commit is contained in:
2026-09-16 12:33:57 +02:00
parent 1048253497
commit 2e4cf1cef0
7 changed files with 824 additions and 2 deletions
+29
View File
@@ -248,6 +248,26 @@ enum Commands {
/// Entfernt die .sanctum Explorer-Integration aus der Benutzer-Registry
Unregister,
/// Aktualisiert Sanctum auf die neueste Version (In-Place Self-Upgrade)
#[command(alias = "update")]
Upgrade {
/// Prüft nur auf verfügbare Aktualisierungen, ohne Dateien herunterzuladen
#[arg(short = 'c', long, default_value_t = false)]
check: bool,
/// Führt die Aktualisierung ohne interaktive Bestätigung durch
#[arg(short = 'y', long, default_value_t = false)]
yes: bool,
/// Erzwingt die Aktualisierung (auch bei gleicher Version oder erkannter Paketmanager-Verwaltung)
#[arg(short = 'f', long, default_value_t = false)]
force: bool,
/// Benutzerdefinierte Gitea-Basis-URL (Standard: https://gitea.pansi.eu)
#[arg(long, default_value = "https://gitea.pansi.eu")]
url: String,
},
}
fn parse_drive_letter(s: &str) -> Result<char> {
@@ -1246,6 +1266,15 @@ async fn run() -> Result<()> {
println!(" {} .sanctum Dateiverknüpfungen wurden aus der Registry entfernt.", ui::green(""));
println!();
}
Commands::Upgrade { check, yes, force, url } => {
let options = sanctum::upgrade::UpgradeOptions {
check_only: check,
yes,
force,
base_url: url,
};
sanctum::upgrade::run_upgrade(&options)?;
}
}
Ok(())