From ded384929d3980648a75171ab71c350aaeb1717c Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sat, 13 Aug 2022 21:31:41 +0200 Subject: [PATCH] move tar related code to borg.archiver.tar --- src/borg/archiver/tar.py | 19 ++++++++++++++++++- src/borg/helpers/__init__.py | 2 +- src/borg/helpers/misc.py | 18 ------------------ 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/borg/archiver/tar.py b/src/borg/archiver/tar.py index ebd3e2693..a7b19c1ab 100644 --- a/src/borg/archiver/tar.py +++ b/src/borg/archiver/tar.py @@ -13,7 +13,6 @@ from ..constants import * # NOQA from ..helpers import Manifest from ..helpers import HardLinkManager from ..helpers import ProgressIndicatorPercent -from ..helpers import get_tar_filter from ..helpers import dash_open from ..helpers import msgpack from ..helpers import create_filter_process @@ -33,6 +32,24 @@ from ..logger import create_logger logger = create_logger(__name__) +def get_tar_filter(fname, decompress): + # Note that filter is None if fname is '-'. + if fname.endswith((".tar.gz", ".tgz")): + filter = "gzip -d" if decompress else "gzip" + elif fname.endswith((".tar.bz2", ".tbz")): + filter = "bzip2 -d" if decompress else "bzip2" + elif fname.endswith((".tar.xz", ".txz")): + filter = "xz -d" if decompress else "xz" + elif fname.endswith((".tar.lz4",)): + filter = "lz4 -d" if decompress else "lz4" + elif fname.endswith((".tar.zstd",)): + filter = "zstd -d" if decompress else "zstd" + else: + filter = None + logger.debug("Automatically determined tar filter: %s", filter) + return filter + + class TarMixIn: @with_repository(compatibility=(Manifest.Operation.READ,)) @with_archive diff --git a/src/borg/helpers/__init__.py b/src/borg/helpers/__init__.py index 43115c23e..708fe57a3 100644 --- a/src/borg/helpers/__init__.py +++ b/src/borg/helpers/__init__.py @@ -17,7 +17,7 @@ from .fs import secure_erase, safe_unlink, dash_open, os_open, os_stat, umount from .fs import O_, flags_root, flags_dir, flags_special_follow, flags_special, flags_base, flags_normal, flags_noatime from .fs import HardLinkManager from .manifest import Manifest, NoManifestError, MandatoryFeatureUnsupported, AI_HUMAN_SORT_KEYS -from .misc import sysinfo, log_multi, consume, get_tar_filter +from .misc import sysinfo, log_multi, consume from .misc import ChunkIteratorFileWrapper, open_item, chunkit, iter_separated, ErrorIgnoringTextIOWrapper from .parseformat import bin_to_hex, safe_encode, safe_decode from .parseformat import remove_surrogates, eval_escapes, decode_dict, positive_int_validator, interval diff --git a/src/borg/helpers/misc.py b/src/borg/helpers/misc.py index 459bca075..4e51b1c31 100644 --- a/src/borg/helpers/misc.py +++ b/src/borg/helpers/misc.py @@ -189,21 +189,3 @@ def iter_separated(fd, sep=None, read_size=4096): # or if there was no data before EOF if len(part) > 0: # type: ignore[arg-type] yield part - - -def get_tar_filter(fname, decompress): - # Note that filter is None if fname is '-'. - if fname.endswith((".tar.gz", ".tgz")): - filter = "gzip -d" if decompress else "gzip" - elif fname.endswith((".tar.bz2", ".tbz")): - filter = "bzip2 -d" if decompress else "bzip2" - elif fname.endswith((".tar.xz", ".txz")): - filter = "xz -d" if decompress else "xz" - elif fname.endswith((".tar.lz4",)): - filter = "lz4 -d" if decompress else "lz4" - elif fname.endswith((".tar.zstd",)): - filter = "zstd -d" if decompress else "zstd" - else: - filter = None - logger.debug("Automatically determined tar filter: %s", filter) - return filter