diff --git a/boot_diags/src/diags.rs b/boot_diags/src/diags.rs index 2429ac9..12c20d8 100644 --- a/boot_diags/src/diags.rs +++ b/boot_diags/src/diags.rs @@ -149,22 +149,15 @@ pub fn parse_chkdsk(diag_group: &mut DiagGroup, task_result: TaskResult) { }); } TaskResult::Output(stdout, stderr, _) => { - let re_carriage_returns = REGEXES.carriage_returns(); let re_chkdsk_splits = REGEXES.chkdsk_splits(); let output_text = if stderr.is_empty() { stdout.clone() } else { format!("{stdout}\n\n-------\n\n{stderr}") }; - let parsed_lines: Vec = output_text - .split("\r\n") - .filter_map(|line| { - let line = re_carriage_returns.replace_all(line, "").trim().to_string(); - if line.is_empty() { None } else { Some(line) } - }) - .collect(); + let output_text = remove_carriage_returns(&output_text); let parsed_output = re_chkdsk_splits - .replace_all(parsed_lines.join("\n").as_str(), "\n $1") + .replace_all(output_text.as_str(), "\n $1") .to_string(); if parsed_output.contains("Windows has scanned the file system and found no problems.") @@ -193,33 +186,16 @@ pub fn parse_chkdsk(diag_group: &mut DiagGroup, task_result: TaskResult) { } } } - - // let mut summary = Vec::new(); - // let raw = if stderr.is_empty() { - // stdout.to_string() - // } else { - // format!("{stdout}\n\n --stderr-- \n\n{stderr}") - // }; - // // TODO: Implement actual logic for result - // Log { - // label: String::from("CHKDSK"), - // raw, - // summary, - // } - // // Split lines - // let lines: Vec<_> = output.split("\r\n").collect(); - // - // // Omit progress lines and unhelpful messages - // lines - // .into_iter() - // .filter(|line| { - // !(line.contains("\r") - // || line.contains("Class not registered") - // || line.contains("/F parameter") - // || line.contains("Running CHKDSK") - // || line.contains("Total duration:") - // || line.contains("Failed to transfer logged messages")) - // }) - // .collect::>() - // .join("\n") +} + +pub fn remove_carriage_returns(text: &str) -> String { + let re_carriage_returns = REGEXES.carriage_returns(); + let parsed_lines: Vec = text + .split("\r\n") + .filter_map(|line| { + let line = re_carriage_returns.replace_all(line, "").trim().to_string(); + if line.is_empty() { None } else { Some(line) } + }) + .collect(); + parsed_lines.join("\n") }