2018-09-02 21:48:12 +02:00
|
|
|
# This file is part of the pycalver project
|
|
|
|
|
# https://github.com/mbarkhau/pycalver
|
|
|
|
|
#
|
|
|
|
|
# (C) 2018 Manuel Barkhau (@mbarkhau)
|
|
|
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
|
|
|
|
|
|
import logging
|
|
|
|
|
import datetime as dt
|
|
|
|
|
|
|
|
|
|
from . import lex_id
|
2018-09-02 23:36:57 +02:00
|
|
|
from . import parse
|
|
|
|
|
|
2018-09-02 21:48:12 +02:00
|
|
|
log = logging.getLogger("pycalver.version")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def current_calver() -> str:
|
2018-09-03 22:23:51 +02:00
|
|
|
return dt.date.today().strftime("v%Y%m")
|
2018-09-02 21:48:12 +02:00
|
|
|
|
|
|
|
|
|
2018-09-03 22:23:51 +02:00
|
|
|
def bump(old_version: str, *, release: str=None) -> str:
|
2018-09-02 21:48:12 +02:00
|
|
|
# old_version is assumed to be a valid calver string,
|
|
|
|
|
# validated in pycalver.config.parse.
|
2018-09-02 23:36:57 +02:00
|
|
|
old_ver = parse.parse_version_info(old_version)
|
2018-09-02 21:48:12 +02:00
|
|
|
|
|
|
|
|
new_calver = current_calver()
|
2018-09-03 22:23:51 +02:00
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
2018-09-02 23:36:57 +02:00
|
|
|
new_build = lex_id.next_id(old_ver.build[1:])
|
2018-09-02 21:48:12 +02:00
|
|
|
if release is None:
|
2018-09-02 23:36:57 +02:00
|
|
|
if old_ver.release:
|
|
|
|
|
# preserve existing release
|
|
|
|
|
new_release = old_ver.release[1:]
|
|
|
|
|
else:
|
|
|
|
|
new_release = None
|
2018-09-03 22:23:51 +02:00
|
|
|
elif release == "final":
|
|
|
|
|
new_release = None
|
2018-09-02 21:48:12 +02:00
|
|
|
else:
|
|
|
|
|
new_release = release
|
|
|
|
|
|
|
|
|
|
new_version = new_calver + "." + new_build
|
|
|
|
|
if new_release:
|
|
|
|
|
new_version += "-" + new_release
|
|
|
|
|
return new_version
|