pub fn run_upgrade(
current_version: &VersionInfo,
options: &UpgradeOptions,
release_provider: &dyn ReleaseProvider,
downloader: &dyn BinaryDownloader,
smoke_tester: &dyn SmokeTester,
interactor: &dyn UserInteractor,
) -> Result<UpgradeResult, UpgradeError>Expand description
Run the full upgrade flow.
This is the main entry point for the upgrade command. It:
- Checks version compatibility
- Fetches release info
- Optionally confirms with user
- Downloads the new binary
- Verifies integrity
- Preserves cached manifest
- Creates backup
- Swaps binary
- Runs smoke test
- Rolls back on failure