Browse Source

implement borgmajor/minor/patch placeholders, fixes #1694

Thomas Waldmann 8 years ago
parent
commit
d49a782796
3 changed files with 28 additions and 4 deletions
  1. 9 1
      borg/__init__.py
  2. 15 3
      borg/archiver.py
  3. 4 0
      borg/helpers.py

+ 9 - 1
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__)

+ 15 - 3
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

+ 4 - 0
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)