From cafdf42a6d25f8dd5434cc51dff32a628c923d9d Mon Sep 17 00:00:00 2001 From: 2Shirt <2xShirt@gmail.com> Date: Tue, 27 Sep 2022 23:54:11 -0700 Subject: [PATCH] Use same log file for full AutoRepairs session --- scripts/wk/log.py | 18 ++++++++++++------ scripts/wk/repairs/win.py | 20 ++++++++++++++++++-- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/scripts/wk/log.py b/scripts/wk/log.py index 2cabd520..b69afb1f 100644 --- a/scripts/wk/log.py +++ b/scripts/wk/log.py @@ -40,7 +40,7 @@ def enable_debug_mode(): def format_log_path( log_dir=None, log_name=None, timestamp=False, - kit=False, tool=False): + kit=False, tool=False, append=False): """Format path based on args passed, returns pathlib.Path obj.""" log_path = pathlib.Path( f'{log_dir if log_dir else DEFAULT_LOG_DIR}/' @@ -54,7 +54,8 @@ def format_log_path( log_path = log_path.resolve() # Avoid clobbering - log_path = non_clobber_path(log_path) + if not append: + log_path = non_clobber_path(log_path) # Done return log_path @@ -121,10 +122,10 @@ def start(config=None): def update_log_path( - dest_dir=None, dest_name=None, keep_history=True, timestamp=True): + dest_dir=None, dest_name=None, keep_history=True, timestamp=True, append=False): """Moves current log file to new path and updates the root logger.""" root_logger = logging.getLogger() - new_path = format_log_path(dest_dir, dest_name, timestamp=timestamp) + new_path = format_log_path(dest_dir, dest_name, timestamp=timestamp, append=append) old_handler = None old_path = get_root_logger_path() os.makedirs(new_path.parent, exist_ok=True) @@ -147,10 +148,15 @@ def update_log_path( new_handler = logging.FileHandler(new_path, mode='a') new_handler.setFormatter(old_handler.formatter) - # Remove old_handler and log if empty + # Remove old_handler root_logger.removeHandler(old_handler) old_handler.close() - remove_empty_log(old_path) + + # Delete orignal log if needed + if keep_history: + remove_empty_log(old_path) + else: + old_path.unlink() # Add new handler root_logger.addHandler(new_handler) diff --git a/scripts/wk/repairs/win.py b/scripts/wk/repairs/win.py index c0ec2089..a1e8fc3f 100644 --- a/scripts/wk/repairs/win.py +++ b/scripts/wk/repairs/win.py @@ -38,7 +38,11 @@ from wk.io import ( rename_item, ) from wk.kit.tools import (download_tool, get_tool_path, run_tool) -from wk.log import format_log_path, update_log_path +from wk.log import ( + format_log_path, + get_root_logger_path, + update_log_path, + ) from wk.os.win import ( OS_VERSION, get_timezone, @@ -277,6 +281,7 @@ def init_run(options): def init_session(options): """Initialize Auto Repairs session.""" reg_set_value('HKCU', AUTO_REPAIR_KEY, 'SessionStarted', 1, 'DWORD') + reg_set_value('HKCU', AUTO_REPAIR_KEY, 'LogName', get_root_logger_path().stem, 'SZ') # Check timezone zone = get_timezone() @@ -347,7 +352,7 @@ def load_settings(menus): def run_auto_repairs(base_menus): """Run Auto Repairs.""" - update_log_path(dest_name='Auto Repairs', timestamp=True) + set_log_path() title = f'{KIT_NAME_FULL}: Auto Repairs' clear_screen() set_title(title) @@ -489,6 +494,17 @@ def save_settings(group, name, result=None, **kwargs): reg_set_value('HKCU', key_path, value_name, data, data_type) +def set_log_path(): + """Set log name using defaults or the saved registry value.""" + try: + log_path = reg_read_value('HKCU', AUTO_REPAIR_KEY, 'LogName') + except FileNotFoundError: + # Ignore and use default values + update_log_path(dest_name='Auto Repairs', timestamp=True) + else: + update_log_path(dest_name=log_path, keep_history=False, timestamp=False, append=True) + + def show_main_menu(base_menus, menus): """Show main menu and handle actions.""" while True: