From 3d23208019a2c9faaf265ff13ad59f2d04f10079 Mon Sep 17 00:00:00 2001 From: Nayeem Rahman Date: Thu, 27 Aug 2020 21:55:58 +0100 Subject: fix(deno install): Strip "@..." suffixes from inferred names (#7223) --- cli/installer.rs | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'cli/installer.rs') diff --git a/cli/installer.rs b/cli/installer.rs index 6d498a16c..2f8b2c18d 100644 --- a/cli/installer.rs +++ b/cli/installer.rs @@ -114,17 +114,16 @@ fn get_installer_root() -> Result { fn infer_name_from_url(url: &Url) -> Option { let path = PathBuf::from(url.path()); - let stem = match path.file_stem() { + let mut stem = match path.file_stem() { Some(stem) => stem.to_string_lossy().to_string(), None => return None, }; - if let Some(parent_path) = path.parent() { - if stem == "main" || stem == "mod" || stem == "index" || stem == "cli" { - if let Some(parent_name) = parent_path.file_name() { - return Some(parent_name.to_string_lossy().to_string()); - } + if stem == "main" || stem == "mod" || stem == "index" || stem == "cli" { + if let Some(parent_name) = path.parent().and_then(|p| p.file_name()) { + stem = parent_name.to_string_lossy().to_string(); } } + let stem = stem.splitn(2, '@').next().unwrap().to_string(); Some(stem) } @@ -349,6 +348,24 @@ mod tests { Some("main".to_string()) ); assert_eq!(infer_name_from_url(&Url::parse("file:///").unwrap()), None); + assert_eq!( + infer_name_from_url( + &Url::parse("https://example.com/abc@0.1.0").unwrap() + ), + Some("abc".to_string()) + ); + assert_eq!( + infer_name_from_url( + &Url::parse("https://example.com/abc@0.1.0/main.ts").unwrap() + ), + Some("abc".to_string()) + ); + assert_eq!( + infer_name_from_url( + &Url::parse("https://example.com/abc@def@ghi").unwrap() + ), + Some("abc".to_string()) + ); } #[test] -- cgit v1.2.3