浏览代码

create and add content to borgmatic-manifest.json

Divyansh Singh 2 年之前
父节点
当前提交
49b4d371ce
共有 1 个文件被更改,包括 23 次插入0 次删除
  1. 23 0
      borgmatic/actions/create.py

+ 23 - 0
borgmatic/actions/create.py

@@ -1,4 +1,5 @@
 import json
 import json
+import os
 import logging
 import logging
 
 
 import borgmatic.borg.create
 import borgmatic.borg.create
@@ -7,9 +8,30 @@ import borgmatic.hooks.command
 import borgmatic.hooks.dispatch
 import borgmatic.hooks.dispatch
 import borgmatic.hooks.dump
 import borgmatic.hooks.dump
 
 
+from borgmatic.borg.state import DEFAULT_BORGMATIC_SOURCE_DIRECTORY
+
 logger = logging.getLogger(__name__)
 logger = logging.getLogger(__name__)
 
 
 
 
+def create_borgmatic_manifest(location, config_paths, dry_run):
+    '''
+    Create a borgmatic manifest file to store the paths to the configuration files used to create
+    the archive.
+    '''    
+    if dry_run:
+        return
+    
+    borgmatic_source_directory = location.get('borgmatic_source_directory') if location.get('borgmatic_source_directory') else DEFAULT_BORGMATIC_SOURCE_DIRECTORY
+
+    borgmatic_manifest_path = os.path.expanduser(os.path.join(borgmatic_source_directory, 'bootstrap', 'configs-list.json'))
+
+    if not os.path.exists(borgmatic_manifest_path):
+        os.makedirs(os.path.dirname(borgmatic_manifest_path), exist_ok=True)
+
+    with open(borgmatic_manifest_path, 'w') as f:
+        json.dump(config_paths, f)
+
+
 def run_create(
 def run_create(
     config_filename,
     config_filename,
     repository,
     repository,
@@ -59,6 +81,7 @@ def run_create(
         location,
         location,
         global_arguments.dry_run,
         global_arguments.dry_run,
     )
     )
+    create_borgmatic_manifest(location, global_arguments.config_paths, global_arguments.dry_run)
     stream_processes = [process for processes in active_dumps.values() for process in processes]
     stream_processes = [process for processes in active_dumps.values() for process in processes]
 
 
     json_output = borgmatic.borg.create.create_archive(
     json_output = borgmatic.borg.create.create_archive(