67 lines
2.1 KiB
Python
67 lines
2.1 KiB
Python
# Checks that the version of the librsvg public crate matches the version for the GNOME library.
|
|
#
|
|
# For stable releases:
|
|
# - GNOME: 2.57.2
|
|
# - crate: 2.57.2
|
|
#
|
|
# For development relases, .9x vs. -beta.x
|
|
# - GNOME: 2.57.90
|
|
# - crate: 2.58.0-beta.0
|
|
|
|
import semver
|
|
import sys
|
|
import toml
|
|
|
|
from utils import get_project_version_str
|
|
|
|
def gen_crate_version_from_project_version(v):
|
|
if v.patch < 90:
|
|
# stable release, just return it
|
|
return v
|
|
elif v.patch >= 90 and v.patch < 99:
|
|
# development release, mangle it for semver
|
|
patch_level = v.patch - 90
|
|
beta = f'beta.{patch_level}'
|
|
return v.bump_minor().replace(prerelease = beta)
|
|
else:
|
|
raise Exception("don't know what to do with patch versions larger than 99")
|
|
|
|
def check_crate_version(project_version_str, crate_version_str):
|
|
# GNOME only likes x.y.z versions
|
|
main_version = semver.Version.parse(project_version_str)
|
|
assert main_version.major is not None
|
|
assert main_version.minor is not None
|
|
assert main_version.patch is not None
|
|
assert main_version.prerelease is None
|
|
assert main_version.build is None
|
|
|
|
crate_version = semver.Version.parse(crate_version_str)
|
|
|
|
if gen_crate_version_from_project_version(main_version) != crate_version:
|
|
raise Exception(
|
|
f'meson.build version {main_version} does not match rsvg crate version {crate_version}'
|
|
)
|
|
|
|
def test_stable():
|
|
a = semver.Version.parse('2.56.3')
|
|
assert gen_crate_version_from_project_version(a) == a
|
|
|
|
def test_development():
|
|
a = semver.Version.parse('2.56.90')
|
|
assert gen_crate_version_from_project_version(a) == semver.Version.parse('2.57.0-beta.0')
|
|
|
|
a = semver.Version.parse('2.57.93')
|
|
assert gen_crate_version_from_project_version(a) == semver.Version.parse('2.58.0-beta.3')
|
|
|
|
def main():
|
|
project_version_str = get_project_version_str()
|
|
|
|
doc = toml.load('rsvg/Cargo.toml')
|
|
crate_version_str = doc['package']['version']
|
|
|
|
check_crate_version(project_version_str, crate_version_str)
|
|
print('Versions number match. All good!', file=sys.stderr)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|