diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2024-08-19 16:05:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-19 17:05:10 +0200 |
commit | c94c5cddb137069640fc9fc61435204d6f63fc5d (patch) | |
tree | 78e5e7a9679a3a9937175ca57e1c4389c21a9933 /cli/args/flags.rs | |
parent | c0aa68a1e2a34777c01fd6f718b7718b14e3a18d (diff) |
feat(upgrade): support `deno upgrade 1.46.0` (#25096)
This commit changes `deno upgrade` subcommand to accept
a positional argument that can be either a version, release channel
name or a git hash, making invocations of `deno upgrade` much
more concise:
```
# before
$ deno upgrade --version 1.46.0
# after
$ deno upgrade 1.46.0
```
```
# before
$ deno upgrade --canary
# after
$ deno upgrade canary
```
```
# specific canary version before
$ deno upgrade --canary --version f042c39180c1b345de8e7b5f0dfae5d0a49b161f
# after
$ deno upgrade f042c39180c1b345de8e7b5f0dfae5d0a49b161f
```
Old flags are still supported, but hidden from the help output.
Diffstat (limited to 'cli/args/flags.rs')
-rw-r--r-- | cli/args/flags.rs | 46 |
1 files changed, 40 insertions, 6 deletions
diff --git a/cli/args/flags.rs b/cli/args/flags.rs index d0a690045..495b84468 100644 --- a/cli/args/flags.rs +++ b/cli/args/flags.rs @@ -412,6 +412,7 @@ pub struct UpgradeFlags { pub canary: bool, pub version: Option<String>, pub output: Option<String>, + pub version_or_hash_or_channel: Option<String>, } #[derive(Clone, Debug, Eq, PartialEq)] @@ -3018,8 +3019,23 @@ The declaration file could be saved and used for typing information.", fn upgrade_subcommand() -> Command { command( "upgrade", - "Upgrade deno executable to the given version. -Defaults to latest. + color_print::cstr!("<g>Upgrade</> deno executable to the given version. + +<g>Latest</> + + deno upgrade + +<g>Specific version</> + + deno upgrade <p(245)>1.45.0</> + deno upgrade <p(245)>1.46.0-rc.1</> + deno upgrade <p(245)>9bc2dd29ad6ba334fd57a20114e367d3c04763d4</> + +<g>Channel</> + + deno upgrade <p(245)>stable</> + deno upgrade <p(245)>rc</> + deno upgrade <p(245)>canary</> The version is downloaded from https://github.com/denoland/deno/releases @@ -3027,7 +3043,7 @@ and is used to replace the current executable. If you want to not replace the current Deno executable but instead download an update to a different location, use the --output flag: - deno upgrade --output $HOME/my_deno", + deno upgrade --output $HOME/my_deno"), UnstableArgsConfig::None, ) .hide(cfg!(not(feature = "upgrade"))) @@ -3037,7 +3053,8 @@ update to a different location, use the --output flag: Arg::new("version") .long("version") .help("The version to upgrade to") - .help_heading(UPGRADE_HEADING), + .help_heading(UPGRADE_HEADING)// NOTE(bartlomieju): pre-v1.46 compat + .hide(true), ) .arg( Arg::new("output") @@ -3067,7 +3084,8 @@ update to a different location, use the --output flag: .long("canary") .help("Upgrade to canary builds") .action(ArgAction::SetTrue) - .help_heading(UPGRADE_HEADING), + .help_heading(UPGRADE_HEADING)// NOTE(bartlomieju): pre-v1.46 compat + .hide(true), ) .arg( Arg::new("release-candidate") @@ -3075,7 +3093,16 @@ update to a different location, use the --output flag: .help("Upgrade to a release candidate") .conflicts_with_all(["canary", "version"]) .action(ArgAction::SetTrue) - .help_heading(UPGRADE_HEADING), + .help_heading(UPGRADE_HEADING) + // NOTE(bartlomieju): pre-v1.46 compat + .hide(true), + ) + .arg( + Arg::new("version-or-hash-or-channel") + .help(color_print::cstr!("Version <p(245)>(v1.46.0)</>, channel <p(245)>(rc, canary)</> or commit hash <p(245)>(9bc2dd29ad6ba334fd57a20114e367d3c04763d4)</>")) + .value_name("VERSION") + .action(ArgAction::Append) + .trailing_var_arg(true), ) .arg(ca_file_arg()) .arg(unsafely_ignore_certificate_errors_arg()) @@ -4911,6 +4938,8 @@ fn upgrade_parse(flags: &mut Flags, matches: &mut ArgMatches) { let release_candidate = matches.get_flag("release-candidate"); let version = matches.remove_one::<String>("version"); let output = matches.remove_one::<String>("output"); + let version_or_hash_or_channel = + matches.remove_one::<String>("version-or-hash-or-channel"); flags.subcommand = DenoSubcommand::Upgrade(UpgradeFlags { dry_run, force, @@ -4918,6 +4947,7 @@ fn upgrade_parse(flags: &mut Flags, matches: &mut ArgMatches) { canary, version, output, + version_or_hash_or_channel, }); } @@ -5426,6 +5456,7 @@ mod tests { release_candidate: false, version: None, output: None, + version_or_hash_or_channel: None, }), ..Flags::default() } @@ -5445,6 +5476,7 @@ mod tests { release_candidate: false, version: None, output: Some(String::from("example.txt")), + version_or_hash_or_channel: None, }), ..Flags::default() } @@ -9435,6 +9467,7 @@ mod tests { release_candidate: false, version: None, output: None, + version_or_hash_or_channel: None, }), ca_data: Some(CaData::File("example.crt".to_owned())), ..Flags::default() @@ -9455,6 +9488,7 @@ mod tests { release_candidate: true, version: None, output: None, + version_or_hash_or_channel: None, }), ..Flags::default() } |