import logging import sys from borgmatic.run import run logger = logging.getLogger(__name__) def extract_last_archive_dry_run(repository, lock_wait=None, local_path='borg', remote_path=None): ''' Perform an extraction dry-run of just the most recent archive. If there are no archives, skip the dry-run. ''' remote_path_flags = ('--remote-path', remote_path) if remote_path else () lock_wait_flags = ('--lock-wait', str(lock_wait)) if lock_wait else () verbosity_flags = () if logger.isEnabledFor(logging.DEBUG): verbosity_flags = ('--debug', '--show-rc') elif logger.isEnabledFor(logging.INFO): verbosity_flags = ('--info',) full_list_command = ( (local_path, 'list', '--short', repository) + remote_path_flags + lock_wait_flags + verbosity_flags ) list_output = run(full_list_command, capture_output = True) last_archive_name = list_output.strip().split('\n')[-1] if not last_archive_name: return list_flag = ('--list',) if logger.isEnabledFor(logging.DEBUG) else () full_extract_command = ( ( local_path, 'extract', '--dry-run', '{repository}::{last_archive_name}'.format( repository=repository, last_archive_name=last_archive_name ), ) + remote_path_flags + lock_wait_flags + verbosity_flags + list_flag ) run(full_extract_command)