Browse Source

give (all) args to open_repository

Thomas Waldmann 9 years ago
parent
commit
c194f3ca1c
1 changed files with 18 additions and 17 deletions
  1. 18 17
      borg/archiver.py

+ 18 - 17
borg/archiver.py

@@ -55,7 +55,8 @@ class Archiver:
         self.exit_code = EXIT_SUCCESS
         self.lock_wait = lock_wait
 
-    def open_repository(self, location, create=False, exclusive=False, lock=True):
+    def open_repository(self, args, create=False, exclusive=False, lock=True):
+        location = args.location  # note: 'location' must be always present in args
         if location.proto == 'ssh':
             repository = RemoteRepository(location, create=create, lock_wait=self.lock_wait, lock=lock)
         else:
@@ -85,7 +86,7 @@ class Archiver:
     def do_init(self, args):
         """Initialize an empty repository"""
         logger.info('Initializing repository at "%s"' % args.location.canonical_path())
-        repository = self.open_repository(args.location, create=True, exclusive=True)
+        repository = self.open_repository(args, create=True, exclusive=True)
         key = key_creator(repository, args)
         manifest = Manifest(key, repository)
         manifest.key = key
@@ -96,7 +97,7 @@ class Archiver:
 
     def do_check(self, args):
         """Check repository consistency"""
-        repository = self.open_repository(args.location, exclusive=args.repair)
+        repository = self.open_repository(args, exclusive=args.repair)
         if args.repair:
             msg = ("'check --repair' is an experimental feature that might result in data loss." +
                    "\n" +
@@ -115,7 +116,7 @@ class Archiver:
 
     def do_change_passphrase(self, args):
         """Change repository key file passphrase"""
-        repository = self.open_repository(args.location)
+        repository = self.open_repository(args)
         manifest, key = Manifest.load(repository)
         key.change_passphrase()
         return EXIT_SUCCESS
@@ -126,7 +127,7 @@ class Archiver:
         dry_run = args.dry_run
         t0 = datetime.now()
         if not dry_run:
-            repository = self.open_repository(args.location, exclusive=True)
+            repository = self.open_repository(args, exclusive=True)
             manifest, key = Manifest.load(repository)
             compr_args = dict(buffer=COMPR_BUFFER)
             compr_args.update(args.compression)
@@ -271,7 +272,7 @@ class Archiver:
             logger.warning('Warning: File system encoding is "ascii", extracting non-ascii filenames will not be supported.')
             if sys.platform.startswith(('linux', 'freebsd', 'netbsd', 'openbsd', 'darwin', )):
                 logger.warning('Hint: You likely need to fix your locale setup. E.g. install locales and use: LANG=en_US.UTF-8')
-        repository = self.open_repository(args.location)
+        repository = self.open_repository(args)
         manifest, key = Manifest.load(repository)
         archive = Archive(repository, key, manifest, args.location.archive,
                           numeric_owner=args.numeric_owner)
@@ -313,7 +314,7 @@ class Archiver:
 
     def do_rename(self, args):
         """Rename an existing archive"""
-        repository = self.open_repository(args.location, exclusive=True)
+        repository = self.open_repository(args, exclusive=True)
         manifest, key = Manifest.load(repository)
         cache = Cache(repository, key, manifest, lock_wait=self.lock_wait)
         archive = Archive(repository, key, manifest, args.location.archive, cache=cache)
@@ -325,7 +326,7 @@ class Archiver:
 
     def do_delete(self, args):
         """Delete an existing repository or archive"""
-        repository = self.open_repository(args.location, exclusive=True)
+        repository = self.open_repository(args, exclusive=True)
         manifest, key = Manifest.load(repository)
         cache = Cache(repository, key, manifest, do_files=args.cache_files, lock_wait=self.lock_wait)
         if args.location.archive:
@@ -368,7 +369,7 @@ class Archiver:
             self.print_error('%s: Mountpoint must be a writable directory' % args.mountpoint)
             return self.exit_code
 
-        repository = self.open_repository(args.location)
+        repository = self.open_repository(args)
         try:
             manifest, key = Manifest.load(repository)
             if args.location.archive:
@@ -388,7 +389,7 @@ class Archiver:
 
     def do_list(self, args):
         """List archive or repository contents"""
-        repository = self.open_repository(args.location)
+        repository = self.open_repository(args)
         manifest, key = Manifest.load(repository)
         if args.location.archive:
             archive = Archive(repository, key, manifest, args.location.archive)
@@ -432,7 +433,7 @@ class Archiver:
 
     def do_info(self, args):
         """Show archive details such as disk space used"""
-        repository = self.open_repository(args.location)
+        repository = self.open_repository(args)
         manifest, key = Manifest.load(repository)
         cache = Cache(repository, key, manifest, do_files=args.cache_files, lock_wait=self.lock_wait)
         archive = Archive(repository, key, manifest, args.location.archive, cache=cache)
@@ -451,7 +452,7 @@ class Archiver:
 
     def do_prune(self, args):
         """Prune repository archives according to specified rules"""
-        repository = self.open_repository(args.location, exclusive=True)
+        repository = self.open_repository(args, exclusive=True)
         manifest, key = Manifest.load(repository)
         cache = Cache(repository, key, manifest, do_files=args.cache_files, lock_wait=self.lock_wait)
         archives = manifest.list_archive_infos(sort_by='ts', reverse=True)  # just a ArchiveInfo list
@@ -515,7 +516,7 @@ class Archiver:
 
     def do_debug_dump_archive_items(self, args):
         """dump (decrypted, decompressed) archive items metadata (not: data)"""
-        repository = self.open_repository(args.location)
+        repository = self.open_repository(args)
         manifest, key = Manifest.load(repository)
         archive = Archive(repository, key, manifest, args.location.archive)
         for i, item_id in enumerate(archive.metadata[b'items']):
@@ -529,7 +530,7 @@ class Archiver:
 
     def do_debug_get_obj(self, args):
         """get object contents from the repository and write it into file"""
-        repository = self.open_repository(args.location)
+        repository = self.open_repository(args)
         manifest, key = Manifest.load(repository)
         hex_id = args.id
         try:
@@ -549,7 +550,7 @@ class Archiver:
 
     def do_debug_put_obj(self, args):
         """put file(s) contents into the repository"""
-        repository = self.open_repository(args.location)
+        repository = self.open_repository(args)
         manifest, key = Manifest.load(repository)
         for path in args.paths:
             with open(path, "rb") as f:
@@ -562,7 +563,7 @@ class Archiver:
 
     def do_debug_delete_obj(self, args):
         """delete the objects with the given IDs from the repo"""
-        repository = self.open_repository(args.location)
+        repository = self.open_repository(args)
         manifest, key = Manifest.load(repository)
         modified = False
         for hex_id in args.ids:
@@ -584,7 +585,7 @@ class Archiver:
 
     def do_break_lock(self, args):
         """Break the repository lock (e.g. in case it was left by a dead borg."""
-        repository = self.open_repository(args.location, lock=False)
+        repository = self.open_repository(args, lock=False)
         try:
             repository.break_lock()
             Cache.break_lock(repository)