use anyhow::Result;
#[derive(Debug, PartialEq, Eq)]
pub(crate) enum WizardStep {
SelectRoot,
Scan,
Convert,
Preview,
Summary,
}
pub(crate) fn run_scan_convert_preview_wizard<S, C, P, R>(
mut scan: S,
mut convert: C,
mut preview: P,
mut progress: R,
) -> Result<()>
where
S: FnMut() -> Result<()>,
C: FnMut() -> Result<()>,
P: FnMut() -> Result<()>,
R: FnMut(WizardStep),
{
progress(WizardStep::SelectRoot);
progress(WizardStep::Scan);
scan()?;
progress(WizardStep::Convert);
convert()?;
progress(WizardStep::Preview);
preview()?;
progress(WizardStep::Summary);
Ok(())
}