mirror of
https://github.com/TECHNOFAB11/bumpver.git
synced 2025-12-12 14:30:09 +01:00
WIP: refactoring and testing
This commit is contained in:
parent
8189075385
commit
5108837f45
11 changed files with 203 additions and 151 deletions
|
|
@ -14,15 +14,25 @@ log = logging.getLogger("pycalver.version")
|
|||
|
||||
|
||||
def current_calver() -> str:
|
||||
return dt.datetime.utcnow().strftime("v%Y%m")
|
||||
return dt.date.today().strftime("v%Y%m")
|
||||
|
||||
|
||||
def bump(old_version: str, release: str=None) -> str:
|
||||
def bump(old_version: str, *, release: str=None) -> str:
|
||||
# old_version is assumed to be a valid calver string,
|
||||
# validated in pycalver.config.parse.
|
||||
old_ver = parse.parse_version_info(old_version)
|
||||
|
||||
new_calver = current_calver()
|
||||
|
||||
if old_ver.calver > new_calver:
|
||||
log.warning(
|
||||
f"'version.bump' called with '{old_version}', " +
|
||||
f"which is from the future, " +
|
||||
f"maybe your system clock is out of sync."
|
||||
)
|
||||
# leave calver as is (don't go back in time)
|
||||
new_calver = old_ver.calver
|
||||
|
||||
new_build = lex_id.next_id(old_ver.build[1:])
|
||||
if release is None:
|
||||
if old_ver.release:
|
||||
|
|
@ -30,6 +40,8 @@ def bump(old_version: str, release: str=None) -> str:
|
|||
new_release = old_ver.release[1:]
|
||||
else:
|
||||
new_release = None
|
||||
elif release == "final":
|
||||
new_release = None
|
||||
else:
|
||||
new_release = release
|
||||
|
||||
|
|
@ -37,38 +49,3 @@ def bump(old_version: str, release: str=None) -> str:
|
|||
if new_release:
|
||||
new_version += "-" + new_release
|
||||
return new_version
|
||||
|
||||
|
||||
def incr_version(old_version: str, *, tag: str="__sentinel__") -> str:
|
||||
maybe_match: MaybeMatch = VERSION_RE.search(old_version)
|
||||
|
||||
if maybe_match is None:
|
||||
raise ValueError(f"Invalid version string: {old_version}")
|
||||
|
||||
prev_version_info: PyCalVerInfo = maybe_match.groupdict()
|
||||
|
||||
prev_calver: str = prev_version_info["calver"]
|
||||
next_calver: str = current_calver()
|
||||
|
||||
prev_build: str = prev_version_info["build"]
|
||||
if prev_calver > next_calver:
|
||||
log.warning(
|
||||
f"'incr_version' called with '{old_version}', " +
|
||||
f"which is from the future, " +
|
||||
f"maybe your system clock is out of sync."
|
||||
)
|
||||
next_calver = prev_calver # leave calver as is
|
||||
|
||||
next_build = lex_id.next_id(prev_build)
|
||||
new_version = f"{next_calver}.{next_build}"
|
||||
if tag != "__sentinel__":
|
||||
if tag is None:
|
||||
pass # tag explicitly ignored/removed
|
||||
else:
|
||||
new_version += "-" + tag
|
||||
elif "tag" in prev_version_info:
|
||||
# preserve previous tag
|
||||
new_version += "-" + prev_version_info["tag"]
|
||||
|
||||
assert old_version < new_version, f"{old_version} {new_version}"
|
||||
return new_version
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue