move rename command to archiver.rename

This commit is contained in:
Thomas Waldmann 2022-07-09 00:58:05 +02:00
parent a31332ddb5
commit 06fe8d3e64
2 changed files with 50 additions and 33 deletions

View File

@ -99,6 +99,7 @@ from .keys import KeysMixIn
from .locks import LocksMixIn from .locks import LocksMixIn
from .mount import MountMixIn from .mount import MountMixIn
from .prune import PruneMixIn from .prune import PruneMixIn
from .rename import RenameMixIn
from .rcreate import RCreateMixIn from .rcreate import RCreateMixIn
from .rdelete import RDeleteMixIn from .rdelete import RDeleteMixIn
from .serve import ServeMixIn from .serve import ServeMixIn
@ -119,6 +120,7 @@ class Archiver(
MountMixIn, MountMixIn,
PruneMixIn, PruneMixIn,
HelpMixIn, HelpMixIn,
RenameMixIn,
RCreateMixIn, RCreateMixIn,
RDeleteMixIn, RDeleteMixIn,
ServeMixIn, ServeMixIn,
@ -695,16 +697,6 @@ class Archiver(
pi.finish() pi.finish()
return self.exit_code 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) @with_repository(exclusive=True, manifest=False)
def do_delete(self, args, repository): def do_delete(self, args, repository):
"""Delete archives""" """Delete archives"""
@ -2202,29 +2194,7 @@ class Archiver(
"paths", metavar="PATH", nargs="*", type=str, help="paths to recreate; patterns are supported" "paths", metavar="PATH", nargs="*", type=str, help="paths to recreate; patterns are supported"
) )
# borg rename self.build_parser_rename(subparsers, common_parser, mid_common_parser)
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_serve(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) self.build_parser_tar(subparsers, common_parser, mid_common_parser)

View File

@ -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"
)