Add fn add_group() to tasks
Allows for a better tracking of group start and end to update the progress window
This commit is contained in:
parent
a2f61e310f
commit
b06c0db27d
3 changed files with 117 additions and 91 deletions
|
|
@ -400,7 +400,7 @@ impl App {
|
|||
self.action_tx.send(build_right_items(self))?;
|
||||
self.action_tx.send(Action::Select(None, None))?;
|
||||
}
|
||||
Action::TaskStart(ref title) => {
|
||||
Action::TaskGroupStart(ref title) => {
|
||||
if self.cur_mode == Mode::BootScan {
|
||||
info!("TaskGroup: {:?}", self.task_groups.front());
|
||||
if self.task_groups.front().is_some() {
|
||||
|
|
@ -608,51 +608,50 @@ impl App {
|
|||
|
||||
// BCD
|
||||
if !letter_boot.is_empty() {
|
||||
self.tasks.add(TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\bcdedit.exe", &self.system32)),
|
||||
vec![
|
||||
String::from("/store"),
|
||||
format!(
|
||||
"{letter_boot}:{}\\Boot\\BCD",
|
||||
if table_type == PartitionTableType::Guid {
|
||||
"\\EFI\\Microsoft"
|
||||
} else {
|
||||
""
|
||||
}
|
||||
),
|
||||
String::from("/enum"),
|
||||
],
|
||||
));
|
||||
self.task_groups
|
||||
.push_back(Some(format!("{}", diags::Type::BootConfigData)));
|
||||
self.tasks.add_group(
|
||||
"Boot Files",
|
||||
vec![TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\bcdedit.exe", &self.system32)),
|
||||
vec![
|
||||
String::from("/store"),
|
||||
format!(
|
||||
"{letter_boot}:{}\\Boot\\BCD",
|
||||
if table_type == PartitionTableType::Guid {
|
||||
"\\EFI\\Microsoft"
|
||||
} else {
|
||||
""
|
||||
}
|
||||
),
|
||||
String::from("/enum"),
|
||||
],
|
||||
)],
|
||||
);
|
||||
self.task_groups.push_back(Some(String::from("Boot Files")));
|
||||
}
|
||||
|
||||
// Bitlocker
|
||||
self.tasks.add(TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\manage-bde.exe", &self.system32)),
|
||||
vec![String::from("-status"), format!("{letter_os}:")],
|
||||
));
|
||||
self.task_groups.push_back(None);
|
||||
self.tasks.add(TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\manage-bde.exe", &self.system32)),
|
||||
self.tasks.add_group(
|
||||
"Bitlocker",
|
||||
vec![
|
||||
String::from("-protectors"),
|
||||
String::from("-get"),
|
||||
format!("{letter_os}:"),
|
||||
TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\manage-bde.exe", &self.system32)),
|
||||
vec![String::from("-status"), format!("{letter_os}:")],
|
||||
),
|
||||
TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\manage-bde.exe", &self.system32)),
|
||||
vec![
|
||||
String::from("-protectors"),
|
||||
String::from("-get"),
|
||||
format!("{letter_os}:"),
|
||||
],
|
||||
),
|
||||
],
|
||||
));
|
||||
self.task_groups
|
||||
.push_back(Some(format!("{}", diags::Type::Bitlocker)));
|
||||
);
|
||||
self.task_groups.push_back(Some(String::from("Bitlocker")));
|
||||
|
||||
// Filesystem Health
|
||||
self.tasks.add(TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\chkdsk.exe", &self.system32)),
|
||||
vec![format!("{letter_os}:")],
|
||||
));
|
||||
self.task_groups.push_back(None);
|
||||
|
||||
// Files/Folders
|
||||
let paths: Vec<PathBuf> = [
|
||||
// Files/Folders
|
||||
"Users",
|
||||
"Program Files",
|
||||
"Program Files (x86)",
|
||||
|
|
@ -662,62 +661,72 @@ impl App {
|
|||
.iter()
|
||||
.map(|s| PathBuf::from(format!("{letter_os}:\\{s}")))
|
||||
.collect();
|
||||
self.tasks.add(TaskType::TestPaths(paths));
|
||||
self.task_groups
|
||||
.push_back(Some(format!("{}", diags::Type::FileSystem)));
|
||||
self.tasks.add_group(
|
||||
"Filesystem",
|
||||
vec![
|
||||
TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\chkdsk.exe", &self.system32)),
|
||||
vec![format!("{letter_os}:")],
|
||||
),
|
||||
TaskType::TestPaths(paths),
|
||||
],
|
||||
);
|
||||
self.task_groups.push_back(Some(String::from("Filesystem")));
|
||||
|
||||
// DISM Health
|
||||
self.tasks.add(TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\dism.exe", &self.system32)),
|
||||
vec![format!("{letter_os}:")],
|
||||
));
|
||||
self.tasks.add_group(
|
||||
"System Files",
|
||||
vec![TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\dism.exe", &self.system32)),
|
||||
vec![format!("{letter_os}:")],
|
||||
)],
|
||||
);
|
||||
self.task_groups
|
||||
.push_back(Some(format!("{}", diags::Type::System)));
|
||||
.push_back(Some(String::from("System Files")));
|
||||
|
||||
// Registry
|
||||
self.tasks.add(TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\reg.exe", &self.system32)),
|
||||
self.tasks.add_group(
|
||||
"Registry",
|
||||
vec![
|
||||
String::from("load"),
|
||||
String::from("HKLM\\TmpSoftware"),
|
||||
format!("{letter_os}:\\Windows\\System32\\config\\SOFTWARE"),
|
||||
TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\reg.exe", &self.system32)),
|
||||
vec![
|
||||
String::from("load"),
|
||||
String::from("HKLM\\TmpSoftware"),
|
||||
format!("{letter_os}:\\Windows\\System32\\config\\SOFTWARE"),
|
||||
],
|
||||
),
|
||||
TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\reg.exe", &self.system32)),
|
||||
vec![
|
||||
String::from("load"),
|
||||
String::from("HKLM\\TmpSystem"),
|
||||
format!("{letter_os}:\\Windows\\System32\\config\\SYSTEM"),
|
||||
],
|
||||
),
|
||||
TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\reg.exe", &self.system32)),
|
||||
vec![
|
||||
String::from("load"),
|
||||
String::from("HKU\\TmpDefault"),
|
||||
format!("{letter_os}:\\Windows\\System32\\config\\DEFAULT"),
|
||||
],
|
||||
),
|
||||
TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\reg.exe", &self.system32)),
|
||||
vec![String::from("unload"), String::from("HKLM\\TmpSoftware")],
|
||||
),
|
||||
TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\reg.exe", &self.system32)),
|
||||
vec![String::from("unload"), String::from("HKLM\\TmpSystem")],
|
||||
),
|
||||
TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\reg.exe", &self.system32)),
|
||||
vec![String::from("unload"), String::from("HKU\\TmpDefault")],
|
||||
),
|
||||
],
|
||||
));
|
||||
self.task_groups.push_back(None);
|
||||
self.tasks.add(TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\reg.exe", &self.system32)),
|
||||
vec![
|
||||
String::from("load"),
|
||||
String::from("HKLM\\TmpSystem"),
|
||||
format!("{letter_os}:\\Windows\\System32\\config\\SYSTEM"),
|
||||
],
|
||||
));
|
||||
self.task_groups.push_back(None);
|
||||
self.tasks.add(TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\reg.exe", &self.system32)),
|
||||
vec![
|
||||
String::from("load"),
|
||||
String::from("HKU\\TmpDefault"),
|
||||
format!("{letter_os}:\\Windows\\System32\\config\\DEFAULT"),
|
||||
],
|
||||
));
|
||||
self.task_groups.push_back(None);
|
||||
self.tasks.add(TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\reg.exe", &self.system32)),
|
||||
vec![String::from("unload"), String::from("HKLM\\TmpSoftware")],
|
||||
));
|
||||
self.task_groups.push_back(None);
|
||||
self.tasks.add(TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\reg.exe", &self.system32)),
|
||||
vec![String::from("unload"), String::from("HKLM\\TmpSystem")],
|
||||
));
|
||||
self.task_groups.push_back(None);
|
||||
self.tasks.add(TaskType::CommandWait(
|
||||
PathBuf::from(format!("{}\\reg.exe", &self.system32)),
|
||||
vec![String::from("unload"), String::from("HKU\\TmpDefault")],
|
||||
));
|
||||
self.task_groups
|
||||
.push_back(Some(format!("{}", diags::Type::Registry)));
|
||||
);
|
||||
self.task_groups.push_back(Some(String::from("Registry")));
|
||||
self.tasks.add(TaskType::Sleep); // NOTE: DELETEME
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ use crate::{
|
|||
line::DVLine,
|
||||
state::Mode,
|
||||
system::disk::Disk,
|
||||
tasks::TaskType,
|
||||
};
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Display, Serialize, Deserialize)]
|
||||
|
|
@ -44,7 +43,8 @@ pub enum Action {
|
|||
ScanDisks,
|
||||
Select(Option<usize>, Option<usize>), // indicies for (source, dest) etc
|
||||
SelectRight(Option<usize>, Option<usize>), // indicies for right info pane
|
||||
TaskStart(String),
|
||||
TaskGroupStart(String),
|
||||
TaskGroupEnd,
|
||||
TasksComplete,
|
||||
UpdateDiskList(Vec<Disk>),
|
||||
UpdateFooter(String),
|
||||
|
|
|
|||
|
|
@ -52,6 +52,8 @@ pub enum TaskType {
|
|||
TestPaths(Vec<PathBuf>),
|
||||
UpdateDestDisk(usize), // (disk_index)
|
||||
UpdateDiskList,
|
||||
GroupStart { label: String },
|
||||
GroupEnd,
|
||||
}
|
||||
|
||||
impl fmt::Display for TaskType {
|
||||
|
|
@ -72,6 +74,8 @@ impl fmt::Display for TaskType {
|
|||
TaskType::TestPaths(_) => write!(f, "TestPaths"),
|
||||
TaskType::UpdateDestDisk(_) => write!(f, "UpdateDestDisk"),
|
||||
TaskType::UpdateDiskList => write!(f, "UpdateDiskList"),
|
||||
TaskType::GroupStart { label } => write!(f, "GroupStart({})", &label),
|
||||
TaskType::GroupEnd => write!(f, "GroupEnd"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -127,6 +131,17 @@ impl Tasks {
|
|||
self.task_list.push_back(Task::new(task_type));
|
||||
}
|
||||
|
||||
pub fn add_group(&mut self, group_label: &str, group_tasks: Vec<TaskType>) {
|
||||
info!("Adding task group: {group_label}");
|
||||
self.task_list.push_back(Task::new(TaskType::GroupStart {
|
||||
label: group_label.to_string(),
|
||||
}));
|
||||
group_tasks.into_iter().for_each(|task| {
|
||||
self.task_list.push_back(Task::new(task));
|
||||
});
|
||||
self.task_list.push_back(Task::new(TaskType::GroupEnd));
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn idle(&self) -> bool {
|
||||
self.cur_handle.is_none()
|
||||
|
|
@ -184,8 +199,6 @@ impl Tasks {
|
|||
cmd_args.clone(),
|
||||
task_tx,
|
||||
));
|
||||
self.action_tx
|
||||
.send(Action::TaskStart(cmd_path.to_string_lossy().into_owned()))?;
|
||||
}
|
||||
TaskType::Diskpart(ref script) => {
|
||||
self.cur_handle = Some(run_task_diskpart(script, task_tx));
|
||||
|
|
@ -235,6 +248,10 @@ impl Tasks {
|
|||
}
|
||||
}));
|
||||
}
|
||||
TaskType::GroupStart { ref label } => {
|
||||
self.action_tx.send(Action::TaskGroupStart(label.clone()))?
|
||||
}
|
||||
TaskType::GroupEnd => self.action_tx.send(Action::TaskGroupEnd)?,
|
||||
}
|
||||
// Done
|
||||
self.cur_task.replace(task);
|
||||
|
|
|
|||
Loading…
Reference in a new issue