diff --git a/CHANGELOG.md b/CHANGELOG.md index c4ec9a777c..8a2a0133c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,8 @@ #### :nail_care: Polish +- Improve error message for dependency without `rescript.json`. https://github.com/rescript-lang/rescript/issues/8265 + #### :house: Internal - Reanalyze server: redesign incremental fixpoint with delete-then-rederive strategy and predecessor tracking, improving speed on deletions. https://github.com/rescript-lang/rescript/pull/8276 diff --git a/rewatch/src/build/packages.rs b/rewatch/src/build/packages.rs index 8ce9d2c7aa..c1f22d8ed3 100644 --- a/rewatch/src/build/packages.rs +++ b/rewatch/src/build/packages.rs @@ -352,7 +352,7 @@ fn read_dependencies( let parent_path_str = project_context.get_root_path().to_string_lossy(); log::error!( - "We could not build package tree reading dependency '{package_name}', at path '{parent_path_str}'. Error: {error}", + "Could not build package tree reading dependency '{package_name}' at path '{parent_path_str}'. Error: {error}", ); std::process::exit(2) @@ -363,7 +363,7 @@ fn read_dependencies( Err(error) => { let parent_path_str = project_context.get_root_path().to_string_lossy(); log::error!( - "We could not build package tree '{package_name}', at path '{parent_path_str}'. Error: {error}", + "Could not build package tree for '{package_name}' at path '{parent_path_str}'. Error: {error}", ); std::process::exit(2) } diff --git a/rewatch/src/config.rs b/rewatch/src/config.rs index 337b537719..1f0ea70348 100644 --- a/rewatch/src/config.rs +++ b/rewatch/src/config.rs @@ -450,7 +450,8 @@ fn namespace_from_package_name(package_name: &str) -> String { impl Config { /// Try to convert a config from a certain path to a config struct pub fn new(path: &Path) -> Result { - let read = fs::read_to_string(path)?; + let read = + fs::read_to_string(path).map_err(|e| anyhow!("Could not read '{}': {}", path.display(), e))?; let mut config = Config::new_from_json_string(&read)?; config.set_path(path.to_path_buf())?; Ok(config) @@ -1490,4 +1491,14 @@ pub mod tests { let args = config.get_warning_args(false, Some("+3+8+11".to_string())); assert_eq!(args, Vec::::new()); } + + #[test] + fn test_new_missing_rescript_json() { + let path = PathBuf::from("/nonexistent/path/rescript.json"); + let error = Config::new(&path).unwrap_err().to_string(); + assert!( + error.contains(path.to_string_lossy().as_ref()), + "Error should include the missing config path, got: {error}" + ); + } }