Show better results in the progress window
This commit is contained in:
parent
ee7147a187
commit
5ba30e626f
2 changed files with 34 additions and 18 deletions
|
|
@ -14,7 +14,7 @@
|
|||
// along with Deja-Vu. If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
use core::{
|
||||
action::Action,
|
||||
action::{Action, DiagResult},
|
||||
components::{
|
||||
Component,
|
||||
footer::Footer,
|
||||
|
|
@ -470,6 +470,10 @@ impl App {
|
|||
}
|
||||
_ => (),
|
||||
}
|
||||
self.action_tx.send(Action::DiagLineUpdate {
|
||||
result: current_group.get_pass_fail_warn(),
|
||||
text: current_group.result.clone(),
|
||||
})?;
|
||||
}
|
||||
}
|
||||
return Ok(());
|
||||
|
|
@ -850,7 +854,7 @@ fn build_left_items(app: &App) -> Action {
|
|||
.iter()
|
||||
.map(|group| {
|
||||
let label = group.diag_type.to_string();
|
||||
let status = if group.passed {
|
||||
let status = if group.get_pass_fail_warn() == DiagResult::Pass {
|
||||
"" // Leave blank if OK
|
||||
} else {
|
||||
" -- Issue(s) detected"
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
// You should have received a copy of the GNU General Public License
|
||||
// along with Deja-Vu. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
use core::{line::DVLine, tasks::TaskResult};
|
||||
use core::{action::DiagResult, line::DVLine, tasks::TaskResult};
|
||||
use std::{fmt, sync::OnceLock, thread::sleep, time::Duration};
|
||||
|
||||
use ratatui::style::Color;
|
||||
|
|
@ -93,7 +93,7 @@ pub struct Log {
|
|||
#[derive(Clone, Debug)]
|
||||
pub struct DiagGroup {
|
||||
pub diag_type: Type,
|
||||
pub passed: bool,
|
||||
pub passed: Vec<bool>,
|
||||
pub logs: Vec<Log>,
|
||||
pub result: String,
|
||||
}
|
||||
|
|
@ -102,7 +102,7 @@ impl DiagGroup {
|
|||
pub fn new(diag_type: Type) -> Self {
|
||||
DiagGroup {
|
||||
diag_type,
|
||||
passed: true,
|
||||
passed: Vec::new(),
|
||||
logs: Vec::new(),
|
||||
result: String::new(),
|
||||
}
|
||||
|
|
@ -124,6 +124,18 @@ impl DiagGroup {
|
|||
.for_each(|log| summaries.extend(log.summary.clone().into_iter()));
|
||||
summaries
|
||||
}
|
||||
|
||||
pub fn get_pass_fail_warn(&self) -> DiagResult {
|
||||
let all_passed = self.passed.iter().fold(true, |acc, result| acc && *result);
|
||||
let all_failed = self.passed.iter().fold(true, |acc, result| acc && !*result);
|
||||
if all_passed {
|
||||
DiagResult::Pass
|
||||
} else if all_failed {
|
||||
DiagResult::Fail
|
||||
} else {
|
||||
DiagResult::Warn
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_diag_type(label: &str) -> Type {
|
||||
|
|
@ -151,7 +163,7 @@ pub fn parse_bitlocker(diag_group: &mut DiagGroup, task_result: TaskResult) {
|
|||
let re_bitlocker_off = REGEXES.bitlocker_off();
|
||||
match task_result {
|
||||
TaskResult::Error(err) => {
|
||||
diag_group.passed = false;
|
||||
diag_group.passed.push(false);
|
||||
diag_group.result = String::from("Error");
|
||||
diag_group.logs.push(Log {
|
||||
label: String::from("Bitlocker"),
|
||||
|
|
@ -172,7 +184,7 @@ pub fn parse_bitlocker(diag_group: &mut DiagGroup, task_result: TaskResult) {
|
|||
let set_result_text = !output_text.contains("All Key Protectors");
|
||||
|
||||
if re_bitlocker_off.is_match(&output_text) {
|
||||
diag_group.passed &= true;
|
||||
diag_group.passed.push(true);
|
||||
result = String::from("OK");
|
||||
diag_group.logs.push(Log {
|
||||
label: String::from("Bitlocker"),
|
||||
|
|
@ -183,7 +195,7 @@ pub fn parse_bitlocker(diag_group: &mut DiagGroup, task_result: TaskResult) {
|
|||
raw: output_text,
|
||||
});
|
||||
} else if re_bitlocker_locked.is_match(&output_text) {
|
||||
diag_group.passed = false;
|
||||
diag_group.passed.push(false);
|
||||
result = String::from("Locked");
|
||||
diag_group.logs.push(Log {
|
||||
label: String::from("Bitlocker"),
|
||||
|
|
@ -194,7 +206,7 @@ pub fn parse_bitlocker(diag_group: &mut DiagGroup, task_result: TaskResult) {
|
|||
raw: output_text,
|
||||
});
|
||||
} else {
|
||||
diag_group.passed &= true;
|
||||
diag_group.passed.push(true);
|
||||
result = String::from("Unknown");
|
||||
diag_group.logs.push(Log {
|
||||
label: String::from("Bitlocker"),
|
||||
|
|
@ -216,7 +228,7 @@ pub fn parse_chkdsk(diag_group: &mut DiagGroup, task_result: TaskResult) {
|
|||
}
|
||||
match task_result {
|
||||
TaskResult::Error(err) => {
|
||||
diag_group.passed = false;
|
||||
diag_group.passed.push(false);
|
||||
diag_group.result = String::from("Error");
|
||||
diag_group.logs.push(Log {
|
||||
label: String::from("CHKDSK"),
|
||||
|
|
@ -241,7 +253,7 @@ pub fn parse_chkdsk(diag_group: &mut DiagGroup, task_result: TaskResult) {
|
|||
|
||||
if parsed_output.contains("Windows has scanned the file system and found no problems.")
|
||||
{
|
||||
diag_group.passed &= true;
|
||||
diag_group.passed.push(true);
|
||||
diag_group.result = String::from("OK");
|
||||
diag_group.logs.push(Log {
|
||||
label: String::from("CHKDSK"),
|
||||
|
|
@ -252,7 +264,7 @@ pub fn parse_chkdsk(diag_group: &mut DiagGroup, task_result: TaskResult) {
|
|||
raw: parsed_output,
|
||||
});
|
||||
} else {
|
||||
diag_group.passed = false;
|
||||
diag_group.passed.push(false);
|
||||
diag_group.result = String::from("Error");
|
||||
diag_group.logs.push(Log {
|
||||
label: String::from("CHKDSK"),
|
||||
|
|
@ -274,7 +286,7 @@ pub fn parse_dism(diag_group: &mut DiagGroup, task_result: TaskResult) {
|
|||
}
|
||||
match task_result {
|
||||
TaskResult::Error(err) => {
|
||||
diag_group.passed = false;
|
||||
diag_group.passed.push(false);
|
||||
diag_group.result = String::from("Error");
|
||||
diag_group.logs.push(Log {
|
||||
label: String::from("DISM"),
|
||||
|
|
@ -293,7 +305,7 @@ pub fn parse_dism(diag_group: &mut DiagGroup, task_result: TaskResult) {
|
|||
};
|
||||
|
||||
if output_text.contains("no component store corruption detected") {
|
||||
diag_group.passed &= true;
|
||||
diag_group.passed.push(true);
|
||||
diag_group.result = String::from("OK");
|
||||
diag_group.logs.push(Log {
|
||||
label: String::from("DISM"),
|
||||
|
|
@ -304,7 +316,7 @@ pub fn parse_dism(diag_group: &mut DiagGroup, task_result: TaskResult) {
|
|||
raw: output_text,
|
||||
});
|
||||
} else {
|
||||
diag_group.passed = false;
|
||||
diag_group.passed.push(false);
|
||||
diag_group.result = String::from("Unknown");
|
||||
diag_group.logs.push(Log {
|
||||
label: String::from("DISM"),
|
||||
|
|
@ -326,7 +338,7 @@ pub fn parse_system_files(diag_group: &mut DiagGroup, task_result: TaskResult) {
|
|||
}
|
||||
match task_result {
|
||||
TaskResult::Error(err) => {
|
||||
diag_group.passed = false;
|
||||
diag_group.passed.push(false);
|
||||
diag_group.result = String::from("Error");
|
||||
diag_group.logs.push(Log {
|
||||
label: String::from("System Files"),
|
||||
|
|
@ -345,7 +357,7 @@ pub fn parse_system_files(diag_group: &mut DiagGroup, task_result: TaskResult) {
|
|||
};
|
||||
|
||||
if passed {
|
||||
diag_group.passed &= true;
|
||||
diag_group.passed.push(true);
|
||||
diag_group.result = String::from("OK");
|
||||
diag_group.logs.push(Log {
|
||||
label: String::from("System Files"),
|
||||
|
|
@ -356,7 +368,7 @@ pub fn parse_system_files(diag_group: &mut DiagGroup, task_result: TaskResult) {
|
|||
raw: output_text,
|
||||
});
|
||||
} else {
|
||||
diag_group.passed = false;
|
||||
diag_group.passed.push(false);
|
||||
diag_group.result = String::from("Error");
|
||||
diag_group.logs.push(Log {
|
||||
label: String::from("System Files"),
|
||||
|
|
|
|||
Loading…
Reference in a new issue