support using prefix and from_pattern/to_pattern at the same time
closes #249.
This commit is contained in:
parent
c944cbcac3
commit
1e5de6cbcb
|
@ -170,6 +170,9 @@ prefix
|
|||
Strip the prefix string if the version string starts with it. Otherwise the
|
||||
version string is returned as-is.
|
||||
|
||||
If both ``prefix`` and ``from_pattern``/``to_pattern`` are used, ``prefix``
|
||||
is applied first.
|
||||
|
||||
from_pattern, to_pattern
|
||||
Both are Python-compatible regular expressions. If ``from_pattern`` is found
|
||||
in the version string, it will be replaced with ``to_pattern``.
|
||||
|
@ -212,13 +215,6 @@ httptoken
|
|||
verify_cert
|
||||
Whether to verify the HTTPS certificate or not. Default is ``true``.
|
||||
|
||||
If both ``prefix`` and ``from_pattern``/``to_pattern`` are used,
|
||||
``from_pattern``/``to_pattern`` are ignored. If you want to strip the prefix
|
||||
and then do something special, just use ``from_pattern``/``to_pattern``. For
|
||||
example, the transformation of ``v1_1_0`` => ``1.1.0`` can be achieved with
|
||||
``from_pattern = 'v(\d+)_(\d+)_(\d+)'`` and ``to_pattern = '\1.\2.\3'``.
|
||||
(Note that in TOML it's easiler to write regexes in single quotes so you don't need to escape ``\``.)
|
||||
|
||||
.. _list options:
|
||||
|
||||
List Options
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# MIT licensed
|
||||
# Copyright (c) 2013-2023 lilydjwg <lilydjwg@gmail.com>, et al.
|
||||
|
||||
__version__ = '2.13.1'
|
||||
__version__ = '2.14dev'
|
||||
|
|
|
@ -279,13 +279,12 @@ def substitute_version(
|
|||
) -> str:
|
||||
'''
|
||||
Substitute the version string via defined rules in the configuration file.
|
||||
See README.rst#global-options for details.
|
||||
See usage.rst#global-options for details.
|
||||
'''
|
||||
prefix = conf.get('prefix')
|
||||
if prefix:
|
||||
if version.startswith(prefix):
|
||||
version = version[len(prefix):]
|
||||
return version
|
||||
|
||||
from_pattern = conf.get('from_pattern')
|
||||
if from_pattern:
|
||||
|
@ -293,9 +292,8 @@ def substitute_version(
|
|||
if to_pattern is None:
|
||||
raise ValueError("from_pattern exists but to_pattern doesn't")
|
||||
|
||||
return re.sub(from_pattern, to_pattern, version)
|
||||
version = re.sub(from_pattern, to_pattern, version)
|
||||
|
||||
# No substitution rules found. Just return the original version string.
|
||||
return version
|
||||
|
||||
def apply_list_options(
|
||||
|
|
|
@ -45,8 +45,8 @@ async def test_substitute_regex_empty_to_pattern(get_version):
|
|||
async def test_substitute_prefix_has_higher_priority(get_version):
|
||||
assert await get_version("example", {
|
||||
"source": "manual",
|
||||
"manual": "r15",
|
||||
"prefix": "r",
|
||||
"from_pattern": r"r(\d+)",
|
||||
"to_pattern": r"R\1",
|
||||
}) == "15"
|
||||
"manual": "Version 1.2 Beta 3",
|
||||
"prefix": "Version ",
|
||||
"from_pattern": r" Beta ",
|
||||
"to_pattern": r"b",
|
||||
}) == "1.2b3"
|
||||
|
|
Loading…
Reference in New Issue