mirror of
https://github.com/borgbackup/borg.git
synced 2025-01-01 04:37:34 +00:00
Adds --prefix to the archives filters arguments
- adds prefix argument to helpers.Archives.list - also renames function PrefixSpec to prefix_spec
This commit is contained in:
parent
f6b9276de9
commit
17f2363935
2 changed files with 11 additions and 12 deletions
|
@ -30,7 +30,7 @@
|
|||
from .helpers import EXIT_SUCCESS, EXIT_WARNING, EXIT_ERROR
|
||||
from .helpers import Error, NoManifestError
|
||||
from .helpers import location_validator, archivename_validator, ChunkerParams, CompressionSpec
|
||||
from .helpers import PrefixSpec, sort_by_spec, HUMAN_SORT_KEYS
|
||||
from .helpers import prefix_spec, sort_by_spec, HUMAN_SORT_KEYS
|
||||
from .helpers import BaseFormatter, ItemFormatter, ArchiveFormatter, format_time, format_file_size, format_archive
|
||||
from .helpers import safe_encode, remove_surrogates, bin_to_hex
|
||||
from .helpers import prune_within, prune_split
|
||||
|
@ -1605,7 +1605,7 @@ def build_parser(self, prog=None):
|
|||
subparser.add_argument('--last', dest='last',
|
||||
type=int, default=None, metavar='N',
|
||||
help='only check last N archives (Default: all)')
|
||||
subparser.add_argument('-P', '--prefix', dest='prefix', type=PrefixSpec,
|
||||
subparser.add_argument('-P', '--prefix', dest='prefix', type=prefix_spec,
|
||||
help='only consider archive names starting with this prefix')
|
||||
subparser.add_argument('-p', '--progress', dest='progress',
|
||||
action='store_true', default=False,
|
||||
|
@ -1995,7 +1995,7 @@ def build_parser(self, prog=None):
|
|||
subparser.add_argument('--format', '--list-format', dest='format', type=str,
|
||||
help="""specify format for file listing
|
||||
(default: "{mode} {user:6} {group:6} {size:8d} {isomtime} {path}{extra}{NL}")""")
|
||||
subparser.add_argument('-P', '--prefix', dest='prefix', type=PrefixSpec,
|
||||
subparser.add_argument('-P', '--prefix', dest='prefix', type=prefix_spec,
|
||||
help='only consider archive names starting with this prefix')
|
||||
subparser.add_argument('-e', '--exclude', dest='excludes',
|
||||
type=parse_pattern, action='append',
|
||||
|
@ -2161,7 +2161,7 @@ def build_parser(self, prog=None):
|
|||
help='number of monthly archives to keep')
|
||||
subparser.add_argument('-y', '--keep-yearly', dest='yearly', type=int, default=0,
|
||||
help='number of yearly archives to keep')
|
||||
subparser.add_argument('-P', '--prefix', dest='prefix', type=PrefixSpec,
|
||||
subparser.add_argument('-P', '--prefix', dest='prefix', type=prefix_spec,
|
||||
help='only consider archive names starting with this prefix')
|
||||
subparser.add_argument('--save-space', dest='save_space', action='store_true',
|
||||
default=False,
|
||||
|
@ -2634,7 +2634,7 @@ def _get_filtered_archives(self, args, manifest):
|
|||
if args.location.archive:
|
||||
raise Error('The options --first, --last and --prefix can only be used on repository targets.')
|
||||
|
||||
archives = manifest.archives.list()
|
||||
archives = manifest.archives.list(prefix=args.prefix)
|
||||
if not archives:
|
||||
logger.critical('There are no archives.')
|
||||
self.exit_code = self.exit_code or EXIT_WARNING
|
||||
|
@ -2645,7 +2645,7 @@ def _get_filtered_archives(self, args, manifest):
|
|||
if args.last:
|
||||
archives.reverse()
|
||||
|
||||
n = args.first or args.last
|
||||
n = args.first or args.last or len(archives)
|
||||
|
||||
return archives[:n]
|
||||
|
||||
|
|
|
@ -142,11 +142,11 @@ def __delitem__(self, name):
|
|||
name = safe_encode(name)
|
||||
del self._archives[name]
|
||||
|
||||
def list(self, sort_by=None, reverse=False):
|
||||
def list(self, sort_by=None, reverse=False, prefix=''):
|
||||
""" Inexpensive Archive.list_archives replacement if we just need .name, .id, .ts
|
||||
Returns list of borg.helpers.ArchiveInfo instances
|
||||
"""
|
||||
archives = list(self.values()) # [self[name] for name in self]
|
||||
archives = [x for x in self.values() if x.name.startswith(prefix)]
|
||||
if sort_by is not None:
|
||||
archives = sorted(archives, key=attrgetter(sort_by))
|
||||
if reverse:
|
||||
|
@ -572,10 +572,6 @@ def CompressionSpec(s):
|
|||
raise ValueError
|
||||
|
||||
|
||||
def PrefixSpec(s):
|
||||
return replace_placeholders(s)
|
||||
|
||||
|
||||
def dir_is_cachedir(path):
|
||||
"""Determines whether the specified path is a cache directory (and
|
||||
therefore should potentially be excluded from the backup) according to
|
||||
|
@ -658,10 +654,13 @@ def replace_placeholders(text):
|
|||
}
|
||||
return format_line(text, data)
|
||||
|
||||
prefix_spec = replace_placeholders
|
||||
|
||||
|
||||
HUMAN_SORT_KEYS = ['timestamp'] + list(ArchiveInfo._fields)
|
||||
HUMAN_SORT_KEYS.remove('ts')
|
||||
|
||||
|
||||
def sort_by_spec(text):
|
||||
for token in text.split(','):
|
||||
if token not in HUMAN_SORT_KEYS:
|
||||
|
|
Loading…
Reference in a new issue