summaryrefslogtreecommitdiff
path: root/cli/tools/upgrade.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2024-08-31 01:22:20 +0100
committerGitHub <noreply@github.com>2024-08-31 00:22:20 +0000
commitc29e5b9d1edc7fb8a67e58ba43ca95eb417025a2 (patch)
treefe82868cc22372e0ed36b2f2f34e80211e535fe8 /cli/tools/upgrade.rs
parenta527b3a5de86d8753f7881faff694fbe3797d93d (diff)
fix(upgrade): more informative information on invalid version (#25319)
Before: ``` $ deno upgrade v1.xx error: Invalid version passed ``` After: ``` $ deno upgrade v1.xx error: Invalid version passed (v1.xx) Example usage: deno upgrade | deno upgrade 1.46 | deno upgrade canary ``` Also updates help text to use "shorthand version" without flags, but a positional arg.
Diffstat (limited to 'cli/tools/upgrade.rs')
-rw-r--r--cli/tools/upgrade.rs19
1 files changed, 15 insertions, 4 deletions
diff --git a/cli/tools/upgrade.rs b/cli/tools/upgrade.rs
index 8db34a620..46c12ba81 100644
--- a/cli/tools/upgrade.rs
+++ b/cli/tools/upgrade.rs
@@ -15,6 +15,7 @@ use crate::util::progress_bar::ProgressBarStyle;
use crate::version;
use async_trait::async_trait;
+use color_print::cstr;
use deno_core::anyhow::bail;
use deno_core::anyhow::Context;
use deno_core::error::AnyError;
@@ -37,6 +38,8 @@ const RELEASE_URL: &str = "https://github.com/denoland/deno/releases";
const CANARY_URL: &str = "https://dl.deno.land/canary";
const RC_URL: &str = "https://dl.deno.land/release";
+static EXAMPLE_USAGE: &str = cstr!("Example usage:\n <p(245)>deno upgrade | deno upgrade 1.46 | deno upgrade canary</>");
+
pub static ARCHIVE_NAME: Lazy<String> =
Lazy::new(|| format!("deno-{}.zip", env!("TARGET")));
@@ -372,14 +375,14 @@ pub fn check_for_upgrades(
log::info!(
"{} {}",
colors::green("A new canary release of Deno is available."),
- colors::italic_gray("Run `deno upgrade --canary` to install it.")
+ colors::italic_gray("Run `deno upgrade canary` to install it.")
);
}
ReleaseChannel::Rc => {
log::info!(
"{} {}",
colors::green("A new release candidate of Deno is available."),
- colors::italic_gray("Run `deno upgrade --rc` to install it.")
+ colors::italic_gray("Run `deno upgrade rc` to install it.")
);
}
// TODO(bartlomieju)
@@ -647,12 +650,20 @@ impl RequestedVersion {
let (channel, passed_version) = if is_canary {
if !re_hash.is_match(&passed_version) {
- bail!("Invalid commit hash passed");
+ bail!(
+ "Invalid commit hash passed ({})\n\n{}",
+ colors::gray(passed_version),
+ EXAMPLE_USAGE
+ );
}
(ReleaseChannel::Canary, passed_version)
} else {
let Ok(semver) = Version::parse_standard(&passed_version) else {
- bail!("Invalid version passed");
+ bail!(
+ "Invalid version passed ({})\n\n{}",
+ colors::gray(passed_version),
+ EXAMPLE_USAGE
+ );
};
if semver.pre.contains(&"rc".to_string()) {