aboutsummaryrefslogtreecommitdiffhomepage
path: root/gbp/deb/git.py
diff options
context:
space:
mode:
authorJonas Meurer <jonas@freesources.org>2016-11-04 13:01:06 +0100
committerGuido Günther <agx@sigxcpu.org>2016-11-04 14:36:09 +0100
commitdd5c3bcaf5125f40a8a3a84d64c1d25de26e5584 (patch)
treed72f0356ae6f2125532d85b04127475be43bda55 /gbp/deb/git.py
parent36b8a58ae289db0f9dea8328c9472c1bb166c4d4 (diff)
Add version mangling
This allows to replace characters in upstream version numbers. I.e. replace '-' by '.'. Closes: #842638
Diffstat (limited to 'gbp/deb/git.py')
-rw-r--r--gbp/deb/git.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/gbp/deb/git.py b/gbp/deb/git.py
index 64cd321a..02c7c28f 100644
--- a/gbp/deb/git.py
+++ b/gbp/deb/git.py
@@ -142,12 +142,26 @@ class DebianGitRepository(GitRepository):
hversion is useful for upstreams with tagging policies that prohibit .
characters.
+ %(version%A%B)s provides %(version)s with string 'A' replaced by 'B'.
+ This way, simple version mangling is possible via substitution.
+ Inside either substition string, '%' needs to be escaped. See the
+ examples below.
+
>>> DebianGitRepository.version_to_tag("debian/%(version)s", "0:0~0")
'debian/0%0_0'
>>> DebianGitRepository.version_to_tag("libfoo-%(hversion)s", "1.8.1")
'libfoo-1-8-1'
-
- """
+ >>> DebianGitRepository.version_to_tag("v%(version%.%_)s", "1.2.3")
+ 'v1_2_3'
+ >>> DebianGitRepository.version_to_tag("%(version%-%\%)s", "0-1.2.3")
+ '0%1.2.3'
+ >>> DebianGitRepository.version_to_tag("%(version%\%%.)s", "0%1%2%3")
+ '0.1.2.3'
+ """
+ r = re.search(r"%\(version%([^%]+|.*\\%.*)%([^%]+|.*\\%.*)\)s", format)
+ if r:
+ format = re.sub(r"%\(version%([^%]+|.*\\%.*)%([^%]|.*\\%.*)+\)s", "%(version)s", format)
+ version = version.replace(r.group(1).replace('\%', '%'), r.group(2).replace('\%', '%'))
return format_str(format, dict(version=DebianGitRepository._sanitize_version(version),
hversion=DebianGitRepository._sanitize_version(version).replace('.', '-')))