diff options
author | TrickyPi <33021497+TrickyPi@users.noreply.github.com> | 2022-03-19 07:18:50 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-18 19:18:50 -0400 |
commit | b01bc7faff5d9c034160fd41c507642c36b82b97 (patch) | |
tree | c87069c31f7a038c4a016d6d6f04ac015691f029 | |
parent | c98c9762943453c6abed100240944e530dfc0efd (diff) |
fix(cli): improve `deno compile` error messages (#13944)
Co-authored-by: David Sherret <dsherret@gmail.com>
-rw-r--r-- | cli/tests/integration/compile_tests.rs | 30 | ||||
-rw-r--r-- | cli/tools/standalone.rs | 27 |
2 files changed, 48 insertions, 9 deletions
diff --git a/cli/tests/integration/compile_tests.rs b/cli/tests/integration/compile_tests.rs index fbe6ffcf5..a6cceb8a7 100644 --- a/cli/tests/integration/compile_tests.rs +++ b/cli/tests/integration/compile_tests.rs @@ -306,8 +306,14 @@ fn compile_with_file_exists_error() { .wait_with_output() .unwrap(); assert!(!output.status.success()); - let expected_stderr = - format!("Could not compile: {:?} is a file.\n", &file_path); + let expected_stderr = format!( + concat!( + "Could not compile to file '{}' because its parent directory ", + "is an existing file. You can use the `--output <file-path>` flag to ", + "provide an alternative name.\n", + ), + file_path.display(), + ); let stderr = String::from_utf8(output.stderr).unwrap(); assert!(stderr.contains(&expected_stderr)); } @@ -334,8 +340,14 @@ fn compile_with_directory_exists_error() { .wait_with_output() .unwrap(); assert!(!output.status.success()); - let expected_stderr = - format!("Could not compile: {:?} is a directory.\n", &exe); + let expected_stderr = format!( + concat!( + "Could not compile to file '{}' because a directory exists with ", + "the same name. You can use the `--output <file-path>` flag to ", + "provide an alternative name." + ), + exe.display() + ); let stderr = String::from_utf8(output.stderr).unwrap(); assert!(stderr.contains(&expected_stderr)); } @@ -363,8 +375,14 @@ fn compile_with_conflict_file_exists_error() { .wait_with_output() .unwrap(); assert!(!output.status.success()); - let expected_stderr = - format!("Could not compile: cannot overwrite {:?}.\n", &exe); + let expected_stderr = format!( + concat!( + "Could not compile to file '{}' because the file already exists ", + "and cannot be overwritten. Please delete the existing file or ", + "use the `--output <file-path` flag to provide an alternative name." + ), + exe.display() + ); let stderr = String::from_utf8(output.stderr).unwrap(); dbg!(&stderr); assert!(stderr.contains(&expected_stderr)); diff --git a/cli/tools/standalone.rs b/cli/tools/standalone.rs index 8d574aec7..dc9ca4508 100644 --- a/cli/tools/standalone.rs +++ b/cli/tools/standalone.rs @@ -183,7 +183,14 @@ pub async fn write_standalone_binary( if output.exists() { // If the output is a directory, throw error if output.is_dir() { - bail!("Could not compile: {:?} is a directory.", &output); + bail!( + concat!( + "Could not compile to file '{}' because a directory exists with ", + "the same name. You can use the `--output <file-path>` flag to ", + "provide an alternative name." + ), + output.display() + ); } // Make sure we don't overwrite any file not created by Deno compiler. @@ -199,7 +206,14 @@ pub async fn write_standalone_binary( has_trailer = magic_trailer == MAGIC_TRAILER; } if !has_trailer { - bail!("Could not compile: cannot overwrite {:?}.", &output); + bail!( + concat!( + "Could not compile to file '{}' because the file already exists ", + "and cannot be overwritten. Please delete the existing file or ", + "use the `--output <file-path` flag to provide an alternative name." + ), + output.display() + ); } // Remove file if it was indeed a deno compiled binary, to avoid corruption @@ -208,7 +222,14 @@ pub async fn write_standalone_binary( } else { let output_base = &output.parent().unwrap(); if output_base.exists() && output_base.is_file() { - bail!("Could not compile: {:?} is a file.", &output_base); + bail!( + concat!( + "Could not compile to file '{}' because its parent directory ", + "is an existing file. You can use the `--output <file-path>` flag to ", + "provide an alternative name.", + ), + output_base.display(), + ); } tokio::fs::create_dir_all(output_base).await?; } |