Avoid clobbering existing files

This commit is contained in:
2Shirt 2019-07-08 16:56:03 -06:00
parent 23eda17bd3
commit ca67ed392f
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C

View file

@ -11,10 +11,6 @@ import time
from . import cfg from . import cfg
# STATIC VARIABLES
LOG = logging.getLogger(__name__)
# Functions # Functions
def enable_debug_mode(): def enable_debug_mode():
"""Configures logging for better debugging.""" """Configures logging for better debugging."""
@ -30,10 +26,12 @@ def enable_debug_mode():
def update_log_path(dest_dir, dest_filename=''): def update_log_path(dest_dir, dest_filename=''):
"""Copies current log file to new dir and updates the root logger.""" """Copies current log file to new dir and updates the root logger."""
dest = pathlib.Path(dest_dir)
dest = dest.expanduser()
root_logger = logging.getLogger() root_logger = logging.getLogger()
cur_handler = root_logger.handlers[0] cur_handler = root_logger.handlers[0]
dest = pathlib.Path(dest_dir)
dest = dest.expanduser()
source = pathlib.Path(cur_handler.baseFilename)
source = source.resolve()
# Safety checks # Safety checks
if len(root_logger.handlers) > 1: if len(root_logger.handlers) > 1:
@ -41,16 +39,14 @@ def update_log_path(dest_dir, dest_filename=''):
if not isinstance(cur_handler, logging.FileHandler): if not isinstance(cur_handler, logging.FileHandler):
raise NotImplementedError('update_log_path() only supports FileHandlers.') raise NotImplementedError('update_log_path() only supports FileHandlers.')
# Set source
source = pathlib.Path(cur_handler.baseFilename)
source = source.resolve()
# Copy original log to new location # Copy original log to new location
if dest_filename: if dest_filename:
dest = dest.joinpath(dest_filename) dest = dest.joinpath(dest_filename)
else: else:
dest = dest.joinpath(source.name) dest = dest.joinpath(source.name)
dest = dest.resolve() dest = dest.resolve()
if dest.exists():
raise FileExistsError('Refusing to clobber: {}'.format(dest))
os.makedirs(dest.parent, exist_ok=True) os.makedirs(dest.parent, exist_ok=True)
shutil.copy(source, dest) shutil.copy(source, dest)