Kaynağa Gözat

Breaking borgmatic command main() apart, since it was getting a little unwieldy.

Dan 7 yıl önce
ebeveyn
işleme
f13ed92b0e
1 değiştirilmiş dosya ile 40 ekleme ve 32 silme
  1. 40 32
      borgmatic/commands/borgmatic.py

+ 40 - 32
borgmatic/commands/borgmatic.py

@@ -79,6 +79,45 @@ def parse_arguments(*arguments):
     return args
 
 
+def run_configuration(config_filename, args):  # pragma: no cover
+    '''
+    Parse and single configuration file, and execute its defined pruning, backups, and/or consistency
+    checks.
+    '''
+    logger.info('{}: Parsing configuration file'.format(config_filename))
+    config = validate.parse_configuration(config_filename, validate.schema_filename())
+    (location, storage, retention, consistency, hooks) = (
+        config.get(section_name, {})
+        for section_name in ('location', 'storage', 'retention', 'consistency', 'hooks')
+    )
+
+    try:
+        remote_path = location.get('remote_path')
+        create.initialize(storage)
+        hook.execute_hook(hooks.get('before_backup'), config_filename, 'pre-backup')
+
+        for repository in location['repositories']:
+            if args.prune:
+                logger.info('{}: Pruning archives'.format(repository))
+                prune.prune_archives(args.verbosity, repository, retention, remote_path=remote_path)
+            if args.create:
+                logger.info('{}: Creating archive'.format(repository))
+                create.create_archive(
+                    args.verbosity,
+                    repository,
+                    location,
+                    storage,
+                )
+            if args.check:
+                logger.info('{}: Running consistency checks'.format(repository))
+                check.check_archives(args.verbosity, repository, consistency, remote_path=remote_path)
+
+        hook.execute_hook(hooks.get('after_backup'), config_filename, 'post-backup')
+    except (OSError, CalledProcessError):
+        hook.execute_hook(hooks.get('on_error'), config_filename, 'on-error')
+        raise
+
+
 def main():  # pragma: no cover
     try:
         args = parse_arguments(*sys.argv[1:])
@@ -92,38 +131,7 @@ def main():  # pragma: no cover
             raise ValueError('Error: No configuration files found in: {}'.format(' '.join(args.config_paths)))
 
         for config_filename in config_filenames:
-            logger.info('{}: Parsing configuration file'.format(config_filename))
-            config = validate.parse_configuration(config_filename, validate.schema_filename())
-            (location, storage, retention, consistency, hooks) = (
-                config.get(section_name, {})
-                for section_name in ('location', 'storage', 'retention', 'consistency', 'hooks')
-            )
-            remote_path = location.get('remote_path')
-
-            try:
-                create.initialize(storage)
-                hook.execute_hook(hooks.get('before_backup'), config_filename, 'pre-backup')
-
-                for repository in location['repositories']:
-                    if args.prune:
-                        logger.info('{}: Pruning archives'.format(repository))
-                        prune.prune_archives(args.verbosity, repository, retention, remote_path=remote_path)
-                    if args.create:
-                        logger.info('{}: Creating archive'.format(repository))
-                        create.create_archive(
-                            args.verbosity,
-                            repository,
-                            location,
-                            storage,
-                        )
-                    if args.check:
-                        logger.info('{}: Running consistency checks'.format(repository))
-                        check.check_archives(args.verbosity, repository, consistency, remote_path=remote_path)
-
-                hook.execute_hook(hooks.get('after_backup'), config_filename, 'post-backup')
-            except (OSError, CalledProcessError):
-                hook.execute_hook(hooks.get('on_error'), config_filename, 'on-error')
-                raise
+            run_configuration(config_filename, args)
     except (ValueError, OSError, CalledProcessError) as error:
         print(error, file=sys.stderr)
         sys.exit(1)