Mark passes Skipped as appropriate
This commit is contained in:
parent
c71e30e4fb
commit
4acdab8c0f
1 changed files with 22 additions and 3 deletions
|
|
@ -246,6 +246,11 @@ class BlockPair():
|
|||
std.print_error(f'Invalid destination: {self.destination}')
|
||||
raise std.GenericAbort()
|
||||
|
||||
def skip_pass(self, pass_name):
|
||||
"""Mark pass as skipped if applicable."""
|
||||
if self.status[pass_name] == 'Pending':
|
||||
self.status[pass_name] = 'Skipped'
|
||||
|
||||
def update_progress(self, pass_name):
|
||||
"""Update progress via map data."""
|
||||
self.load_map_data()
|
||||
|
|
@ -255,6 +260,13 @@ class BlockPair():
|
|||
if percent > 0:
|
||||
self.status[pass_name] = percent
|
||||
|
||||
# Mark future passes as skipped if applicable
|
||||
if percent == 100:
|
||||
if pass_name == 'read':
|
||||
self.status['trim'] = 'Skipped'
|
||||
if pass_name in ('read', 'trim'):
|
||||
self.status['scrape'] = 'Skipped'
|
||||
|
||||
|
||||
class State():
|
||||
"""Object for tracking hardware diagnostic data."""
|
||||
|
|
@ -853,7 +865,6 @@ class State():
|
|||
_f.write('\n')
|
||||
|
||||
def save_settings(self, settings):
|
||||
# pylint: disable=no-self-use
|
||||
"""Save settings for future runs."""
|
||||
settings_file = pathlib.Path(
|
||||
f'{self.working_dir}/Clone_{self.source.details["model"]}.json',
|
||||
|
|
@ -867,6 +878,12 @@ class State():
|
|||
std.print_error('Failed to save clone settings')
|
||||
raise std.GenericAbort()
|
||||
|
||||
def skip_pass(self, pass_name):
|
||||
"""Mark block_pairs as skipped if applicable."""
|
||||
for pair in self.block_pairs:
|
||||
if pair.status[pass_name] == 'Pending':
|
||||
pair.status[pass_name] = 'Skipped'
|
||||
|
||||
def update_progress_pane(self, overall_status):
|
||||
"""Update progress pane."""
|
||||
report = []
|
||||
|
|
@ -1672,7 +1689,6 @@ def mount_raw_image_macos(path):
|
|||
def run_ddrescue(state, block_pair, pass_name, settings, dry_run=True):
|
||||
"""Run ddrescue using passed settings."""
|
||||
cmd = build_ddrescue_cmd(block_pair, pass_name, settings)
|
||||
proc = None
|
||||
state.update_progress_pane('Active')
|
||||
std.clear_screen()
|
||||
warning_message = ''
|
||||
|
|
@ -1788,11 +1804,14 @@ def run_recovery(state, main_menu, settings_menu, dry_run=True):
|
|||
# Skip to next pass (unless retry selected)
|
||||
if '--retrim' not in settings and state.pass_complete(pass_name):
|
||||
# NOTE: This bypasses auto_continue
|
||||
state.skip_pass(pass_name)
|
||||
continue
|
||||
|
||||
# Run ddrescue
|
||||
for pair in state.block_pairs:
|
||||
if not pair.pass_complete(pass_name):
|
||||
if '--retrim' not in settings and pair.pass_complete(pass_name):
|
||||
pair.skip_pass(pass_name)
|
||||
else:
|
||||
attempted_recovery = True
|
||||
state.mark_started()
|
||||
try:
|
||||
|
|
|
|||
Loading…
Reference in a new issue