0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-04 01:44:26 -05:00

add free arg

This commit is contained in:
Bartek Iwańczuk 2024-08-19 14:56:53 +02:00
parent a808f0a0f4
commit f042c39180
No known key found for this signature in database
GPG key ID: 0C6BCDDC3B3AD750
2 changed files with 60 additions and 8 deletions

View file

@ -3019,8 +3019,23 @@ The declaration file could be saved and used for typing information.",
fn upgrade_subcommand() -> Command { fn upgrade_subcommand() -> Command {
command( command(
"upgrade", "upgrade",
"Upgrade deno executable to the given version. color_print::cstr!("<g>Upgrade</> deno executable to the given version.
Defaults to latest.
<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 The version is downloaded from
https://github.com/denoland/deno/releases https://github.com/denoland/deno/releases
@ -3028,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 If you want to not replace the current Deno executable but instead download an
update to a different location, use the --output flag: update to a different location, use the --output flag:
deno upgrade --output $HOME/my_deno", deno upgrade --output $HOME/my_deno"),
UnstableArgsConfig::None, UnstableArgsConfig::None,
) )
.hide(cfg!(not(feature = "upgrade"))) .hide(cfg!(not(feature = "upgrade")))
@ -3038,7 +3053,8 @@ update to a different location, use the --output flag:
Arg::new("version") Arg::new("version")
.long("version") .long("version")
.help("The version to upgrade to") .help("The version to upgrade to")
.help_heading(UPGRADE_HEADING), .help_heading(UPGRADE_HEADING)// NOTE(bartlomieju): pre-v1.46 compat
.hide(true),
) )
.arg( .arg(
Arg::new("output") Arg::new("output")
@ -3068,7 +3084,8 @@ update to a different location, use the --output flag:
.long("canary") .long("canary")
.help("Upgrade to canary builds") .help("Upgrade to canary builds")
.action(ArgAction::SetTrue) .action(ArgAction::SetTrue)
.help_heading(UPGRADE_HEADING), .help_heading(UPGRADE_HEADING)// NOTE(bartlomieju): pre-v1.46 compat
.hide(true),
) )
.arg( .arg(
Arg::new("release-candidate") Arg::new("release-candidate")
@ -3076,11 +3093,13 @@ update to a different location, use the --output flag:
.help("Upgrade to a release candidate") .help("Upgrade to a release candidate")
.conflicts_with_all(["canary", "version"]) .conflicts_with_all(["canary", "version"])
.action(ArgAction::SetTrue) .action(ArgAction::SetTrue)
.help_heading(UPGRADE_HEADING), .help_heading(UPGRADE_HEADING)
// NOTE(bartlomieju): pre-v1.46 compat
.hide(true),
) )
.arg( .arg(
Arg::new("version-or-hash-or-channel") Arg::new("version-or-hash-or-channel")
.help("Version, channel or commit hash") .help(color_print::cstr!("Version <p(245)>(v1.46.0)</>, channel <p(245)>(rc, canary)</> or commit hash <p(245)>(9bc2dd29ad6ba334fd57a20114e367d3c04763d4)</>"))
.value_name("VERSION") .value_name("VERSION")
.action(ArgAction::Append) .action(ArgAction::Append)
.trailing_var_arg(true), .trailing_var_arg(true),

View file

@ -547,7 +547,7 @@ pub async fn upgrade(
Ok(()) Ok(())
} }
#[derive(Debug)] #[derive(Debug, PartialEq)]
enum RequestedVersion { enum RequestedVersion {
Latest(ReleaseChannel), Latest(ReleaseChannel),
SpecificVersion(ReleaseChannel, String), SpecificVersion(ReleaseChannel, String),
@ -1048,6 +1048,39 @@ mod test {
use super::*; use super::*;
#[test]
fn test_requested_version() {
let mut upgrade_flags = UpgradeFlags {
dry_run: false,
force: false,
release_candidate: false,
canary: false,
version: None,
output: None,
version_or_hash_or_channel: None,
};
let req_ver =
RequestedVersion::from_upgrade_flags(upgrade_flags.clone()).unwrap();
assert_eq!(req_ver, RequestedVersion::Latest(ReleaseChannel::Stable));
let req_ver =
RequestedVersion::from_upgrade_flags(upgrade_flags.clone()).unwrap();
assert_eq!(req_ver, RequestedVersion::Latest(ReleaseChannel::Stable));
let req_ver =
RequestedVersion::from_upgrade_flags(upgrade_flags.clone()).unwrap();
assert_eq!(req_ver, RequestedVersion::Latest(ReleaseChannel::Stable));
let req_ver =
RequestedVersion::from_upgrade_flags(upgrade_flags.clone()).unwrap();
assert_eq!(req_ver, RequestedVersion::Latest(ReleaseChannel::Stable));
let req_ver =
RequestedVersion::from_upgrade_flags(upgrade_flags.clone()).unwrap();
assert_eq!(req_ver, RequestedVersion::Latest(ReleaseChannel::Stable));
}
#[test] #[test]
fn test_parse_upgrade_check_file() { fn test_parse_upgrade_check_file() {
// NOTE(bartlomieju): pre-1.46 format // NOTE(bartlomieju): pre-1.46 format