solana-install init edge when "edge" is not currently installed now works

(cherry picked from commit ed58bcda4c)
This commit is contained in:
Michael Vines
2020-02-11 13:32:26 -07:00
parent 04dab9b274
commit 1f30d1e77a

View File

@ -757,11 +757,11 @@ 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, release_dir) = match explicit_release { let (download_url, 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);
let download = if release_dir.join(".ok").exists() { let download_url = 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
println!("{} is present, no download required.", release_semver); println!("{} is present, no download required.", release_semver);
@ -769,36 +769,43 @@ pub fn update(config_file: &str) -> Result<bool, String> {
} else { } else {
Some(download_url) Some(download_url)
}; };
(download, release_dir) (download_url, release_dir)
} }
ExplicitRelease::Channel(release_channel) => { ExplicitRelease::Channel(release_channel) => {
let release_dir = config.release_dir(&release_channel);
let current_release_version_yml =
release_dir.join("solana-release").join("version.yml");
let download_url = Some(release_channel_download_url(release_channel));
if !current_release_version_yml.exists() {
(download_url, release_dir)
} else {
let version_url = release_channel_version_url(release_channel); let version_url = release_channel_version_url(release_channel);
let (_temp_dir, temp_file, _temp_archive_sha256) = let (_temp_dir, temp_file, _temp_archive_sha256) =
download_to_temp(&version_url, None) download_to_temp(&version_url, None).map_err(|err| {
.map_err(|err| format!("Unable to download {}: {}", version_url, err))?; format!("Unable to download {}: {}", version_url, err)
})?;
let update_release_version = load_release_version(&temp_file)?; let update_release_version = load_release_version(&temp_file)?;
let release_dir = config.release_dir(&release_channel);
let current_release_version = let current_release_version =
load_release_version(&release_dir.join("solana-release").join("version.yml"))?; load_release_version(&current_release_version_yml)?;
let download = if update_release_version.commit == current_release_version.commit { if update_release_version.commit == current_release_version.commit {
// Same commit, no update required // Same commit, no update required
println!( println!(
"Latest {} build is already present, no download required.", "Latest {} build is already present, no download required.",
release_channel release_channel
); );
None (None, release_dir)
} else { } else {
Some(release_channel_download_url(release_channel)) (download_url, release_dir)
}; }
(download, release_dir) }
} }
}; };
if let Some(download_url) = download { if let Some(download_url) = download_url {
let (_temp_dir, temp_archive, _temp_archive_sha256) = let (_temp_dir, temp_archive, _temp_archive_sha256) =
download_to_temp(&download_url, None) download_to_temp(&download_url, None)
.map_err(|err| format!("Unable to download {}: {}", download_url, err))?; .map_err(|err| format!("Unable to download {}: {}", download_url, err))?;