1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-24 15:19:26 -05:00

fix(upgrade): support RC release with --version flag (#25091)

This commit fixes scenarios like:
```
$ deno upgrade --version=v1.46.0-rc.0
Downloading https://github.com/denoland/deno/releases/download/v1.46.0-rc.0/deno-aarch64-apple-darwin.zip
Download could not be found, aborting
```

Now:
```
$ target/debug/deno upgrade --version=v1.46.0-rc.0
Downloading https://dl.deno.land/release/v1.46.0-rc.0/deno-aarch64-apple-darwin.zip
Deno is upgrading to version 1.46.0-rc.0

Upgraded successfully to Deno v1.46.0-rc.0

```

Also some unneeded code was removed.
This commit is contained in:
Bartek Iwańczuk 2024-08-19 01:27:06 +01:00 committed by GitHub
parent 52681a2a29
commit 5c69b4861b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -380,13 +380,13 @@ async fn check_for_upgrades_for_lsp_with_provider(
} }
} }
Ok(Some(LspVersionUpgradeInfo { Ok(Some(LspVersionUpgradeInfo {
latest_version: latest_version.display, latest_version: latest_version.version_or_hash,
is_canary: false, is_canary: false,
})) }))
} }
ReleaseChannel::Canary => Ok(Some(LspVersionUpgradeInfo { ReleaseChannel::Canary => Ok(Some(LspVersionUpgradeInfo {
latest_version: latest_version.display, latest_version: latest_version.version_or_hash,
is_canary: true, is_canary: true,
})), })),
@ -490,7 +490,7 @@ pub async fn upgrade(
"{}", "{}",
colors::gray(format!( colors::gray(format!(
"Deno is upgrading to version {}", "Deno is upgrading to version {}",
&selected_version_to_upgrade.display &selected_version_to_upgrade.version_or_hash
)) ))
); );
@ -529,13 +529,17 @@ pub async fn upgrade(
check_windows_access_denied_error(output_result, output_exe_path)?; check_windows_access_denied_error(output_result, output_exe_path)?;
log::info!( log::info!(
"\nUpgraded successfully to Deno {}\n", "\nUpgraded successfully to Deno {} {}\n",
colors::green(selected_version_to_upgrade.display()) colors::green(selected_version_to_upgrade.display()),
colors::gray(&format!(
"({})",
selected_version_to_upgrade.release_channel.name()
))
); );
if requested_version.release_channel() == ReleaseChannel::Stable { if requested_version.release_channel() == ReleaseChannel::Stable {
print_release_notes( print_release_notes(
version::DENO_VERSION_INFO.deno, version::DENO_VERSION_INFO.deno,
&selected_version_to_upgrade.display, &selected_version_to_upgrade.version_or_hash,
); );
} }
@ -577,10 +581,15 @@ impl RequestedVersion {
} }
(ReleaseChannel::Canary, passed_version) (ReleaseChannel::Canary, passed_version)
} else { } else {
if Version::parse_standard(&passed_version).is_err() { let Ok(semver) = Version::parse_standard(&passed_version) else {
bail!("Invalid version passed"); bail!("Invalid version passed");
}; };
(ReleaseChannel::Stable, passed_version)
if semver.pre.contains(&"rc".to_string()) {
(ReleaseChannel::Rc, passed_version)
} else {
(ReleaseChannel::Stable, passed_version)
}
}; };
Ok(RequestedVersion::SpecificVersion(channel, passed_version)) Ok(RequestedVersion::SpecificVersion(channel, passed_version))
@ -619,9 +628,8 @@ fn select_specific_version_for_upgrade(
} }
Ok(Some(AvailableVersion { Ok(Some(AvailableVersion {
version_or_hash: version.to_string(), version_or_hash: version,
release_channel, release_channel,
display: version,
})) }))
} }
ReleaseChannel::Canary => { ReleaseChannel::Canary => {
@ -635,13 +643,28 @@ fn select_specific_version_for_upgrade(
} }
Ok(Some(AvailableVersion { Ok(Some(AvailableVersion {
version_or_hash: version.to_string(), version_or_hash: version,
release_channel,
}))
}
ReleaseChannel::Rc => {
let current_is_passed = version::DENO_VERSION_INFO.release_channel
== ReleaseChannel::Rc
&& version::DENO_VERSION_INFO.deno == version;
if !force && current_is_passed {
log::info!(
"Version {} is already installed",
version::DENO_VERSION_INFO.deno
);
return Ok(None);
}
Ok(Some(AvailableVersion {
version_or_hash: version,
release_channel, release_channel,
display: version,
})) }))
} }
// TODO(bartlomieju)
ReleaseChannel::Rc => unreachable!(),
// TODO(bartlomieju) // TODO(bartlomieju)
ReleaseChannel::Lts => unreachable!(), ReleaseChannel::Lts => unreachable!(),
} }
@ -741,8 +764,6 @@ async fn find_latest_version_to_upgrade(
struct AvailableVersion { struct AvailableVersion {
version_or_hash: String, version_or_hash: String,
release_channel: ReleaseChannel, release_channel: ReleaseChannel,
// TODO(bartlomieju): remove this one
display: String,
} }
impl AvailableVersion { impl AvailableVersion {
@ -750,8 +771,8 @@ impl AvailableVersion {
/// for non-canary releases. /// for non-canary releases.
fn display(&self) -> Cow<str> { fn display(&self) -> Cow<str> {
match self.release_channel { match self.release_channel {
ReleaseChannel::Canary => Cow::Borrowed(&self.display), ReleaseChannel::Canary => Cow::Borrowed(&self.version_or_hash),
_ => Cow::Owned(format!("v{}", self.display)), _ => Cow::Owned(format!("v{}", self.version_or_hash)),
} }
} }
} }
@ -778,13 +799,11 @@ fn normalize_version_from_server(
Ok(AvailableVersion { Ok(AvailableVersion {
version_or_hash: v.to_string(), version_or_hash: v.to_string(),
release_channel, release_channel,
display: v.to_string(),
}) })
} }
ReleaseChannel::Canary => Ok(AvailableVersion { ReleaseChannel::Canary => Ok(AvailableVersion {
version_or_hash: text.to_string(), version_or_hash: text.to_string(),
release_channel, release_channel,
display: text.to_string(),
}), }),
} }
} }
@ -1111,7 +1130,6 @@ mod test {
latest_version: Rc::new(RefCell::new(Ok(AvailableVersion { latest_version: Rc::new(RefCell::new(Ok(AvailableVersion {
version_or_hash: "".to_string(), version_or_hash: "".to_string(),
release_channel: ReleaseChannel::Stable, release_channel: ReleaseChannel::Stable,
display: "".to_string(),
}))), }))),
time: Rc::new(RefCell::new(chrono::Utc::now())), time: Rc::new(RefCell::new(chrono::Utc::now())),
} }
@ -1140,7 +1158,6 @@ mod test {
*self.latest_version.borrow_mut() = Ok(AvailableVersion { *self.latest_version.borrow_mut() = Ok(AvailableVersion {
version_or_hash: version.to_string(), version_or_hash: version.to_string(),
release_channel, release_channel,
display: version.to_string(),
}); });
} }
@ -1437,7 +1454,6 @@ mod test {
AvailableVersion { AvailableVersion {
version_or_hash: "1.0.0".to_string(), version_or_hash: "1.0.0".to_string(),
release_channel: ReleaseChannel::Stable, release_channel: ReleaseChannel::Stable,
display: "1.0.0".to_string()
}, },
); );
// should not replace v after start // should not replace v after start
@ -1450,7 +1466,6 @@ mod test {
AvailableVersion { AvailableVersion {
version_or_hash: "1.0.0-test-v".to_string(), version_or_hash: "1.0.0-test-v".to_string(),
release_channel: ReleaseChannel::Stable, release_channel: ReleaseChannel::Stable,
display: "1.0.0-test-v".to_string()
} }
); );
// should not strip v for canary // should not strip v for canary
@ -1463,7 +1478,6 @@ mod test {
AvailableVersion { AvailableVersion {
version_or_hash: "v1452345asdf".to_string(), version_or_hash: "v1452345asdf".to_string(),
release_channel: ReleaseChannel::Canary, release_channel: ReleaseChannel::Canary,
display: "v1452345asdf".to_string()
} }
); );
assert_eq!( assert_eq!(
@ -1472,7 +1486,6 @@ mod test {
AvailableVersion { AvailableVersion {
version_or_hash: "1.46.0-rc.0".to_string(), version_or_hash: "1.46.0-rc.0".to_string(),
release_channel: ReleaseChannel::Rc, release_channel: ReleaseChannel::Rc,
display: "1.46.0-rc.0".to_string(),
}, },
); );
} }