0
0
mirror of https://github.com/signalapp/libsignal.git synced 2024-09-20 20:03:07 +02:00
libsignal/bin/verify_crate_versions.py
2021-02-10 13:11:35 -05:00

75 lines
1.9 KiB
Python
Executable File

#!/usr/bin/env python3
#
# Copyright 2021 Signal Messenger, LLC.
# SPDX-License-Identifier: AGPL-3.0-only
#
# Verify crate versions and lib package versions are in accord
import sys
import re
import json
import os
def swift_version():
version_re = re.compile(r".*\.version\s+=\s+'(.*)'")
for line in open('SignalClient.podspec'):
match = version_re.match(line)
if match:
return match.group(1)
raise Exception("Could not determine version from SignalClient.podspec")
def java_version():
version_re = re.compile(r"\s+ext\.version_number\s+=\s+\"(.*)\"")
for line in open('java/build.gradle'):
match = version_re.match(line)
if match:
return match.group(1)
raise Exception("Could not determine version from java/build.gradle")
def node_version():
package_json = json.load(open('package.json'))
return package_json['version']
def bridge_version(bridge):
version_re = re.compile('^version = "(.*)"')
bridge_cargo_toml = os.path.join('rust/bridge/', bridge, 'Cargo.toml')
for line in open(bridge_cargo_toml):
match = version_re.match(line)
if match:
return match.group(1)
raise Exception("Could not determine version from ", bridge_cargo_toml)
def main():
package_versions = {
'swift': swift_version(),
'java': java_version(),
'node': node_version()
}
bridge_versions = {
'swift': bridge_version('ffi'),
'java': bridge_version('jni'),
'node': bridge_version('node'),
}
rc = 0
for bridge in ['swift', 'java', 'node']:
if bridge_versions[bridge] != package_versions[bridge]:
print("ERROR: Bridge %s has package version %s but crate version is %s" % (
bridge, package_versions[bridge], bridge_versions[bridge]))
rc = 1
return rc
if __name__ == '__main__':
sys.exit(main())