From d49a782796413e4b1492f73b3dd213fd696fefe6 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Fri, 21 Oct 2016 03:43:38 +0200 Subject: [PATCH] implement borgmajor/minor/patch placeholders, fixes #1694 --- borg/__init__.py | 10 +++++++++- borg/archiver.py | 18 +++++++++++++++--- borg/helpers.py | 4 ++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/borg/__init__.py b/borg/__init__.py index e292841a6..2dcf95316 100644 --- a/borg/__init__.py +++ b/borg/__init__.py @@ -1,3 +1,11 @@ -# This is a python package +import re from ._version import version as __version__ + +version_re = r'(\d+)\.(\d+)\.(\d+)' + +m = re.match(version_re, __version__) +if m: + __version_tuple__ = tuple(map(int, m.groups())) +else: + raise RuntimeError("Can't parse __version__: %r" % __version__) diff --git a/borg/archiver.py b/borg/archiver.py index ad822452f..f417c245f 100644 --- a/borg/archiver.py +++ b/borg/archiver.py @@ -949,7 +949,19 @@ class Archiver: {borgversion} - The version of borg. + The version of borg, e.g.: 1.0.8rc1 + + {borgmajor} + + The version of borg, only the major version, e.g.: 1 + + {borgminor} + + The version of borg, only major and minor version, e.g.: 1.0 + + {borgpatch} + + The version of borg, only major, minor and patch version, e.g.: 1.0.8 Examples:: @@ -1229,8 +1241,8 @@ class Archiver: '.checkpoint.N' (with N being a number), because these names are used for checkpoints and treated in special ways. - In the archive name, you may use the following format tags: - {now}, {utcnow}, {fqdn}, {hostname}, {user}, {pid}, {borgversion} + In the archive name, you may use the following placeholders: + {now}, {utcnow}, {fqdn}, {hostname}, {user} and some others. To speed up pulling backups over sshfs and similar network file systems which do not provide correct inode information the --ignore-inode flag can be used. This diff --git a/borg/helpers.py b/borg/helpers.py index 2cceb2af1..a4469c990 100644 --- a/borg/helpers.py +++ b/borg/helpers.py @@ -28,6 +28,7 @@ from fnmatch import translate from operator import attrgetter from . import __version__ as borg_version +from . import __version_tuple__ as borg_version_tuple from . import hashindex from . import chunker from . import crypto @@ -585,6 +586,9 @@ def replace_placeholders(text): 'utcnow': current_time.utcnow(), 'user': uid2user(os.getuid(), os.getuid()), 'borgversion': borg_version, + 'borgmajor': '%d' % borg_version_tuple[:1], + 'borgminor': '%d.%d' % borg_version_tuple[:2], + 'borgpatch': '%d.%d.%d' % borg_version_tuple[:3], } return format_line(text, data)