diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2024-08-31 01:22:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-31 00:22:20 +0000 |
commit | c29e5b9d1edc7fb8a67e58ba43ca95eb417025a2 (patch) | |
tree | fe82868cc22372e0ed36b2f2f34e80211e535fe8 /cli/tools/upgrade.rs | |
parent | a527b3a5de86d8753f7881faff694fbe3797d93d (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.rs | 19 |
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()) { |