|
|
|
@ -1,6 +1,6 @@
|
|
|
|
|
from enum import Enum
|
|
|
|
|
|
|
|
|
|
from pkg_resources import parse_version
|
|
|
|
|
from packaging.version import parse
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Feature(Enum):
|
|
|
|
@ -18,17 +18,17 @@ class Feature(Enum):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FEATURE_TO_MINIMUM_BORG_VERSION = {
|
|
|
|
|
Feature.COMPACT: parse_version('1.2.0a2'), # borg compact
|
|
|
|
|
Feature.ATIME: parse_version('1.2.0a7'), # borg create --atime
|
|
|
|
|
Feature.NOFLAGS: parse_version('1.2.0a8'), # borg create --noflags
|
|
|
|
|
Feature.NUMERIC_IDS: parse_version('1.2.0b3'), # borg create/extract/mount --numeric-ids
|
|
|
|
|
Feature.UPLOAD_RATELIMIT: parse_version('1.2.0b3'), # borg create --upload-ratelimit
|
|
|
|
|
Feature.SEPARATE_REPOSITORY_ARCHIVE: parse_version('2.0.0a2'), # --repo with separate archive
|
|
|
|
|
Feature.RCREATE: parse_version('2.0.0a2'), # borg rcreate
|
|
|
|
|
Feature.RLIST: parse_version('2.0.0a2'), # borg rlist
|
|
|
|
|
Feature.RINFO: parse_version('2.0.0a2'), # borg rinfo
|
|
|
|
|
Feature.MATCH_ARCHIVES: parse_version('2.0.0b3'), # borg --match-archives
|
|
|
|
|
Feature.EXCLUDED_FILES_MINUS: parse_version('2.0.0b5'), # --list --filter uses "-" for excludes
|
|
|
|
|
Feature.COMPACT: parse('1.2.0a2'), # borg compact
|
|
|
|
|
Feature.ATIME: parse('1.2.0a7'), # borg create --atime
|
|
|
|
|
Feature.NOFLAGS: parse('1.2.0a8'), # borg create --noflags
|
|
|
|
|
Feature.NUMERIC_IDS: parse('1.2.0b3'), # borg create/extract/mount --numeric-ids
|
|
|
|
|
Feature.UPLOAD_RATELIMIT: parse('1.2.0b3'), # borg create --upload-ratelimit
|
|
|
|
|
Feature.SEPARATE_REPOSITORY_ARCHIVE: parse('2.0.0a2'), # --repo with separate archive
|
|
|
|
|
Feature.RCREATE: parse('2.0.0a2'), # borg rcreate
|
|
|
|
|
Feature.RLIST: parse('2.0.0a2'), # borg rlist
|
|
|
|
|
Feature.RINFO: parse('2.0.0a2'), # borg rinfo
|
|
|
|
|
Feature.MATCH_ARCHIVES: parse('2.0.0b3'), # borg --match-archives
|
|
|
|
|
Feature.EXCLUDED_FILES_MINUS: parse('2.0.0b5'), # --list --filter uses "-" for excludes
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -37,4 +37,4 @@ def available(feature, borg_version):
|
|
|
|
|
Given a Borg Feature constant and a Borg version string, return whether that feature is
|
|
|
|
|
available in that version of Borg.
|
|
|
|
|
'''
|
|
|
|
|
return FEATURE_TO_MINIMUM_BORG_VERSION[feature] <= parse_version(borg_version)
|
|
|
|
|
return FEATURE_TO_MINIMUM_BORG_VERSION[feature] <= parse(borg_version)
|
|
|
|
|