From 06fe8d3e64d2096d1936c8cdde779a65dd4264c3 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sat, 9 Jul 2022 00:58:05 +0200 Subject: [PATCH] move rename command to archiver.rename --- src/borg/archiver/__init__.py | 36 +++------------------------ src/borg/archiver/rename.py | 47 +++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 33 deletions(-) create mode 100644 src/borg/archiver/rename.py diff --git a/src/borg/archiver/__init__.py b/src/borg/archiver/__init__.py index 2b501c48f..c27c1f12f 100644 --- a/src/borg/archiver/__init__.py +++ b/src/borg/archiver/__init__.py @@ -99,6 +99,7 @@ from .keys import KeysMixIn from .locks import LocksMixIn from .mount import MountMixIn from .prune import PruneMixIn +from .rename import RenameMixIn from .rcreate import RCreateMixIn from .rdelete import RDeleteMixIn from .serve import ServeMixIn @@ -119,6 +120,7 @@ class Archiver( MountMixIn, PruneMixIn, HelpMixIn, + RenameMixIn, RCreateMixIn, RDeleteMixIn, ServeMixIn, @@ -695,16 +697,6 @@ class Archiver( pi.finish() return self.exit_code - @with_repository(exclusive=True, cache=True, compatibility=(Manifest.Operation.CHECK,)) - @with_archive - def do_rename(self, args, repository, manifest, key, cache, archive): - """Rename an existing archive""" - archive.rename(args.newname) - manifest.write() - repository.commit(compact=False) - cache.commit() - return self.exit_code - @with_repository(exclusive=True, manifest=False) def do_delete(self, args, repository): """Delete archives""" @@ -2202,29 +2194,7 @@ class Archiver( "paths", metavar="PATH", nargs="*", type=str, help="paths to recreate; patterns are supported" ) - # borg rename - rename_epilog = process_epilog( - """ - This command renames an archive in the repository. - - This results in a different archive ID. - """ - ) - subparser = subparsers.add_parser( - "rename", - parents=[common_parser], - add_help=False, - description=self.do_rename.__doc__, - epilog=rename_epilog, - formatter_class=argparse.RawDescriptionHelpFormatter, - help="rename archive", - ) - subparser.set_defaults(func=self.do_rename) - subparser.add_argument("name", metavar="OLDNAME", type=archivename_validator(), help="specify the archive name") - subparser.add_argument( - "newname", metavar="NEWNAME", type=archivename_validator(), help="specify the new archive name" - ) - + self.build_parser_rename(subparsers, common_parser, mid_common_parser) self.build_parser_serve(subparsers, common_parser, mid_common_parser) self.build_parser_tar(subparsers, common_parser, mid_common_parser) diff --git a/src/borg/archiver/rename.py b/src/borg/archiver/rename.py new file mode 100644 index 000000000..9122e5a23 --- /dev/null +++ b/src/borg/archiver/rename.py @@ -0,0 +1,47 @@ +import argparse + +from .common import with_repository, with_archive +from ..constants import * # NOQA +from ..helpers import archivename_validator +from ..helpers import Manifest + +from ..logger import create_logger + +logger = create_logger() + + +class RenameMixIn: + @with_repository(exclusive=True, cache=True, compatibility=(Manifest.Operation.CHECK,)) + @with_archive + def do_rename(self, args, repository, manifest, key, cache, archive): + """Rename an existing archive""" + archive.rename(args.newname) + manifest.write() + repository.commit(compact=False) + cache.commit() + return self.exit_code + + def build_parser_rename(self, subparsers, common_parser, mid_common_parser): + from .common import process_epilog + + rename_epilog = process_epilog( + """ + This command renames an archive in the repository. + + This results in a different archive ID. + """ + ) + subparser = subparsers.add_parser( + "rename", + parents=[common_parser], + add_help=False, + description=self.do_rename.__doc__, + epilog=rename_epilog, + formatter_class=argparse.RawDescriptionHelpFormatter, + help="rename archive", + ) + subparser.set_defaults(func=self.do_rename) + subparser.add_argument("name", metavar="OLDNAME", type=archivename_validator(), help="specify the archive name") + subparser.add_argument( + "newname", metavar="NEWNAME", type=archivename_validator(), help="specify the new archive name" + )