summaryrefslogtreecommitdiff
path: root/cli/args/flags.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2024-08-19 16:05:10 +0100
committerGitHub <noreply@github.com>2024-08-19 17:05:10 +0200
commitc94c5cddb137069640fc9fc61435204d6f63fc5d (patch)
tree78e5e7a9679a3a9937175ca57e1c4389c21a9933 /cli/args/flags.rs
parentc0aa68a1e2a34777c01fd6f718b7718b14e3a18d (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.rs46
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()
}