diff options
author | Jonas Meurer <jonas@freesources.org> | 2016-11-04 13:01:06 +0100 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2016-11-04 14:36:09 +0100 |
commit | dd5c3bcaf5125f40a8a3a84d64c1d25de26e5584 (patch) | |
tree | d72f0356ae6f2125532d85b04127475be43bda55 /gbp/deb/git.py | |
parent | 36b8a58ae289db0f9dea8328c9472c1bb166c4d4 (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.py | 18 |
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('.', '-'))) |