(version_text: String, log: &Logger)
| 627 | } |
| 628 | |
| 629 | pub fn parse_version(version_text: String, log: &Logger) -> Result<String, Error> { |
| 630 | if version_text.to_ascii_lowercase().contains("error") { |
| 631 | log.debug(format!("Error parsing version: {}", version_text)); |
| 632 | return Err(anyhow!(PARSE_ERROR)); |
| 633 | } |
| 634 | let mut parsed_version = "".to_string(); |
| 635 | let re_numbers_dots = Regex::new(r"[^\d^.]")?; |
| 636 | let re_versions = Regex::new(r"(?:(\d+)\.)?(?:(\d+)\.)?(?:(\d+)\.\d+)")?; |
| 637 | for token in version_text.split(' ') { |
| 638 | parsed_version = re_numbers_dots.replace_all(token, "").to_string(); |
| 639 | if re_versions.is_match(parsed_version.as_str()) { |
| 640 | break; |
| 641 | } |
| 642 | } |
| 643 | if parsed_version.ends_with('.') { |
| 644 | parsed_version = parsed_version[0..parsed_version.len() - 1].to_string(); |
| 645 | } |
| 646 | Ok(parsed_version) |
| 647 | } |
| 648 | |
| 649 | pub fn path_to_string(path: &Path) -> String { |
| 650 | path.to_path_buf() |
no test coverage detected