From 0ce8169e6bb8082cfc0e37dc44fd50dcb087ca9b Mon Sep 17 00:00:00 2001 From: 2Shirt <2xShirt@gmail.com> Date: Thu, 15 Dec 2022 20:03:05 -0800 Subject: [PATCH 1/2] Skip the main menu when resuming to Auto Repairs Fixes issue #205 --- scripts/wk/repairs/win.py | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/scripts/wk/repairs/win.py b/scripts/wk/repairs/win.py index 4c090b06..2929e528 100644 --- a/scripts/wk/repairs/win.py +++ b/scripts/wk/repairs/win.py @@ -251,7 +251,7 @@ def get_entry_settings(group, name): return settings -def init(menus): +def init(menus, presets): """Initialize Auto Repairs.""" session_started = is_session_started() @@ -263,17 +263,18 @@ def init(menus): reg_set_value('HKCU', AUTO_REPAIR_KEY, 'Use Autologon', 0, 'DWORD') save_selection_settings(menus) - # Start or resume a repair session - if session_started: - load_settings(menus) - print_info('Resuming session, press CTRL+c to cancel') - for _x in range(AUTO_REPAIR_DELAY_IN_SECONDS, 0, -1): - print(f' {_x} second{"" if _x==1 else "s"} remaining... \r', end='') - sleep(1) - print('') + # Start new session + if not session_started: + load_preset(menus, presets, enable_menu_exit=False) + return - # Done - return session_started + # Resume session + load_settings(menus) + print_info('Resuming session, press CTRL+c to cancel') + for _x in range(AUTO_REPAIR_DELAY_IN_SECONDS, 0, -1): + print(f' {_x} second{"" if _x==1 else "s"} remaining... \r', end='') + sleep(1) + print('') def init_run(options): @@ -407,18 +408,18 @@ def run_auto_repairs(base_menus, presets): print_standard('Initializing...') menus = build_menus(base_menus, title, presets) - # Get repair preset - load_preset(menus, presets, enable_menu_exit=False) - # Init + session_started = False + show_menu_again = False try: - session_started = init(menus) + init(menus, presets) except KeyboardInterrupt: # Assuming session was started and resume countdown was interrupted - session_started = None + show_menu_again = True + session_started = is_session_started() # Show Menu - if session_started is None or not session_started: + if show_menu_again or not session_started: try: show_main_menu(base_menus, menus, presets, title) except SystemExit: @@ -426,10 +427,6 @@ def run_auto_repairs(base_menus, presets): end_session() raise - # Re-check if a repair session was started - if session_started is None: - session_started = is_session_started() - # Start or resume repairs clear_screen() print_standard(title) From 0e2d51926c440c77c0050ad5127b1d2acda5e4dc Mon Sep 17 00:00:00 2001 From: 2Shirt <2xShirt@gmail.com> Date: Thu, 15 Dec 2022 20:41:05 -0800 Subject: [PATCH 2/2] Fix Auto Repairs menu Reboot entries weren't selected in the default profile due to having ASCII color escapes. --- scripts/wk/repairs/win.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/wk/repairs/win.py b/scripts/wk/repairs/win.py index 2929e528..33cd7cbb 100644 --- a/scripts/wk/repairs/win.py +++ b/scripts/wk/repairs/win.py @@ -234,7 +234,7 @@ def end_session(): def get_entry_settings(group, name): """Get menu entry settings from the registry, returns dict.""" - key_path = fr'{AUTO_REPAIR_KEY}\{group}\{strip_colors(name)}' + key_path = fr'{AUTO_REPAIR_KEY}\{group}\{name}' settings = {} for value in ('done', 'failed', 'message', 'selected', 'skipped', 'warning'): try: @@ -378,8 +378,7 @@ def load_preset(menus, presets, enable_menu_exit=True): for group, menu in menus.items(): group_enabled = group in preset for name in menu.options: - name_str = strip_colors(name) - value = group_enabled and name_str in preset[group] + value = group_enabled and name in preset[group] menu.options[name]['Selected'] = value # Re-enable Main Menu action if disabled @@ -392,7 +391,7 @@ def load_settings(menus): if group == 'Main': continue for name in menu.options: - menu.options[name].update(get_entry_settings(group, name)) + menu.options[name].update(get_entry_settings(group, strip_colors(name))) def run_auto_repairs(base_menus, presets): @@ -527,6 +526,7 @@ def save_settings(group, name, result=None, **kwargs): # Write values to registry for value_name, data in kwargs.items(): + value_name = strip_colors(value_name) if isinstance(data, bool): data = 1 if data else 0 if isinstance(data, int):