Handle new active_release_dir, even if semver already downloaded (#5431)
This commit is contained in:
parent
572e942413
commit
72e9492ca6
|
@ -717,36 +717,40 @@ pub fn update(config_file: &str) -> Result<bool, String> {
|
||||||
let update_manifest = info(config_file, false)?;
|
let update_manifest = info(config_file, false)?;
|
||||||
|
|
||||||
let release_dir = if let Some(explicit_release) = &config.explicit_release {
|
let release_dir = if let Some(explicit_release) = &config.explicit_release {
|
||||||
let (download_url, release_dir) = match explicit_release {
|
let (download, release_dir) = match explicit_release {
|
||||||
ExplicitRelease::Semver(release_semver) => {
|
ExplicitRelease::Semver(release_semver) => {
|
||||||
let download_url = github_release_download_url(release_semver);
|
let download_url = github_release_download_url(release_semver);
|
||||||
let release_dir = config.release_dir(&release_semver);
|
let release_dir = config.release_dir(&release_semver);
|
||||||
if release_dir.join(".ok").exists() {
|
let download = if release_dir.join(".ok").exists() {
|
||||||
// If this release_semver has already been successfully downloaded, no update
|
// If this release_semver has already been successfully downloaded, no update
|
||||||
// needed
|
// needed
|
||||||
return Ok(false);
|
None
|
||||||
}
|
} else {
|
||||||
(download_url, release_dir)
|
Some(download_url)
|
||||||
|
};
|
||||||
|
(download, release_dir)
|
||||||
}
|
}
|
||||||
ExplicitRelease::Channel(release_channel) => {
|
ExplicitRelease::Channel(release_channel) => {
|
||||||
let download_url = release_channel_download_url(release_channel);
|
let download_url = release_channel_download_url(release_channel);
|
||||||
let release_dir = config.release_dir(&release_channel);
|
let release_dir = config.release_dir(&release_channel);
|
||||||
// Note: There's currently no mechanism to check for an updated binary for a release
|
// Note: There's currently no mechanism to check for an updated binary for a release
|
||||||
// channel so a download always occurs.
|
// channel so a download always occurs.
|
||||||
(download_url, release_dir)
|
(Some(download_url), release_dir)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let (_temp_dir, temp_archive, _temp_archive_sha256) =
|
if let Some(download_url) = download {
|
||||||
download_to_temp_archive(&download_url, None)
|
let (_temp_dir, temp_archive, _temp_archive_sha256) =
|
||||||
.map_err(|err| format!("Unable to download {}: {}", download_url, err))?;
|
download_to_temp_archive(&download_url, None)
|
||||||
extract_release_archive(&temp_archive, &release_dir).map_err(|err| {
|
.map_err(|err| format!("Unable to download {}: {}", download_url, err))?;
|
||||||
format!(
|
extract_release_archive(&temp_archive, &release_dir).map_err(|err| {
|
||||||
"Unable to extract {:?} to {:?}: {}",
|
format!(
|
||||||
temp_archive, release_dir, err
|
"Unable to extract {:?} to {:?}: {}",
|
||||||
)
|
temp_archive, release_dir, err
|
||||||
})?;
|
)
|
||||||
let _ = fs::create_dir_all(release_dir.join(".ok"));
|
})?;
|
||||||
|
let _ = fs::create_dir_all(release_dir.join(".ok"));
|
||||||
|
}
|
||||||
|
|
||||||
release_dir
|
release_dir
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue