diff --git a/src/providers/clojure.rs b/src/providers/clojure.rs index 60dfe6361..58888672b 100644 --- a/src/providers/clojure.rs +++ b/src/providers/clojure.rs @@ -80,7 +80,7 @@ impl ClojureProvider { fn parse_custom_version(custom_version: String) -> Result { // Regex for reading JDK versions (e.g. 8 or 11 or latest) - let jdk_regex = Regex::new(r"(^[0-9][0-9]?$)|(^latest$)")?; + let jdk_regex = Regex::new(r"^([0-9][0-9]?|latest)$")?; // Capture matches let matches = jdk_regex.captures(custom_version.as_str().trim()); @@ -91,11 +91,7 @@ impl ClojureProvider { } let matches = matches.unwrap(); - let matched_value = if matches.get(0).is_some() { - matches.get(0) - } else { - matches.get(1) - }; + let matched_value = matches.get(0); let value = match matched_value { Some(m) => m.as_str(), diff --git a/src/providers/deno.rs b/src/providers/deno.rs index ce9b46ecb..0cd42a4f5 100644 --- a/src/providers/deno.rs +++ b/src/providers/deno.rs @@ -29,10 +29,13 @@ impl Provider for DenoProvider { } fn detect(&self, app: &App, _env: &Environment) -> Result { - let re = Regex::new(r##"(?m)^import .+ from "https://deno.land/[^"]+\.ts";?$"##).unwrap(); + let re = Regex::new( + r##"import .+ from (?:"|'|`)https://deno.land/[^"`']+\.(?:ts|js|tsx|jsx)(?:"|'|`);?"##, + ) + .unwrap(); Ok(app.includes_file("deno.json") || app.includes_file("deno.jsonc") - || app.find_match(&re, "**/*.ts")?) + || app.find_match(&re, "**/*.{tsx,ts,js,jsx}")?) } fn setup(&self, _app: &App, _env: &Environment) -> Result> { diff --git a/src/providers/node.rs b/src/providers/node.rs index 955873274..f62ec4507 100644 --- a/src/providers/node.rs +++ b/src/providers/node.rs @@ -195,7 +195,7 @@ impl NodeProvider { // Parse `18` or `18.x` into nodejs-18_x // This also supports 18.x.x, or any number in place of the x. - let re = Regex::new(r"^(\d*)\.?([x|X]|[0-9]+)\.?([x|X]|[0-9]+)?$").unwrap(); + let re = Regex::new(r"^(\d*)(?:\.?(?:\d*|[xX]?)?)(?:\.?(?:\d*|[xX]?)?)").unwrap(); if let Some(node_pkg) = parse_regex_into_pkg(&re, node_version.clone()) { return Ok(Pkg::new(node_pkg.as_str())); } @@ -379,13 +379,8 @@ fn version_number_to_pkg(version: &u32) -> String { fn parse_regex_into_pkg(re: &Regex, node_version: String) -> Option { let matches: Vec<_> = re.captures_iter(node_version.as_str()).collect(); - if let Some(m) = matches.get(0) { - let capture = if node_version.contains('.') { - &m[1] - } else { - &m[0] - }; - match capture.parse::() { + if let Some(captures) = matches.get(0) { + match captures[1].parse::() { Ok(version) => return Some(version_number_to_pkg(&version)), Err(_e) => {} }