summaryrefslogtreecommitdiff
path: root/cli/tools/upgrade.rs
diff options
context:
space:
mode:
authorƁukasz Czerniawski <33061335+lczerniawski@users.noreply.github.com>2024-03-15 00:53:46 +0100
committerGitHub <noreply@github.com>2024-03-14 23:53:46 +0000
commit5403e4f06b2bb9da60c67b7c1909f4d412c20307 (patch)
treefeffd2a905c6b01d0bf2599cd6c72d04286636f1 /cli/tools/upgrade.rs
parent85116226b3b5faae0aa85ce5d053487e82dcc824 (diff)
chore(cli): move away from PathBuf in clap (#22036)
Diffstat (limited to 'cli/tools/upgrade.rs')
-rw-r--r--cli/tools/upgrade.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/cli/tools/upgrade.rs b/cli/tools/upgrade.rs
index 86a271c1f..6bb4606d3 100644
--- a/cli/tools/upgrade.rs
+++ b/cli/tools/upgrade.rs
@@ -379,8 +379,11 @@ pub async fn upgrade(
let factory = CliFactory::from_flags(flags)?;
let client = factory.http_client();
let current_exe_path = std::env::current_exe()?;
+ let full_path_output_flag = upgrade_flags
+ .output
+ .map(|output| factory.cli_options().initial_cwd().join(output));
let output_exe_path =
- upgrade_flags.output.as_ref().unwrap_or(&current_exe_path);
+ full_path_output_flag.as_ref().unwrap_or(&current_exe_path);
let permissions = if let Ok(metadata) = fs::metadata(output_exe_path) {
let permissions = metadata.permissions();
@@ -430,7 +433,7 @@ pub async fn upgrade(
};
if !upgrade_flags.force
- && upgrade_flags.output.is_none()
+ && full_path_output_flag.is_none()
&& current_is_passed
{
log::info!("Version {} is already installed", crate::version::deno());
@@ -464,7 +467,7 @@ pub async fn upgrade(
};
if !upgrade_flags.force
- && upgrade_flags.output.is_none()
+ && full_path_output_flag.is_none()
&& current_is_most_recent
{
log::info!(
@@ -520,7 +523,7 @@ pub async fn upgrade(
}
} else {
let output_exe_path =
- upgrade_flags.output.as_ref().unwrap_or(&current_exe_path);
+ full_path_output_flag.as_ref().unwrap_or(&current_exe_path);
let output_result = if *output_exe_path == current_exe_path {
replace_exe(&new_exe_path, output_exe_path)
} else {