12345678910111213141516171819202122232425262728293031323334353637 |
- import logging
- from borgmatic import execute
- from borgmatic.logger import get_logger
- logger = get_logger(__name__)
- def execute_hook(commands, config_filename, description, dry_run):
- '''
- Given a list of hook commands to execute, a config filename, a hook description, and whether
- this is a dry run, run the given commands. Or, don't run them if this is a dry run.
- '''
- if not commands:
- logger.debug('{}: No commands to run for {} hook'.format(config_filename, description))
- return
- dry_run_label = ' (dry run; not actually running hooks)' if dry_run else ''
- if len(commands) == 1:
- logger.info(
- '{}: Running command for {} hook{}'.format(config_filename, description, dry_run_label)
- )
- else:
- logger.info(
- '{}: Running {} commands for {} hook{}'.format(
- config_filename, len(commands), description, dry_run_label
- )
- )
- for command in commands:
- if not dry_run:
- execute.execute_command(
- [command],
- output_log_level=logging.ERROR if description == 'on-error' else logging.WARNING,
- shell=True,
- )
|