mirror of
https://github.com/signalapp/libsignal.git
synced 2024-09-20 03:52:17 +02:00
b27f5c0f2e
This will be necessary to adopt the Gradle Nexus publishing plugin, but it's also just simpler.
79 lines
2.5 KiB
Python
Executable File
79 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
#
|
|
# Copyright 2021 Signal Messenger, LLC.
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
#
|
|
|
|
# Keep crate versions and lib package versions in accord
|
|
|
|
import fileinput
|
|
import sys
|
|
import re
|
|
import os
|
|
|
|
|
|
def read_version(file, pattern):
|
|
with open(file) as f:
|
|
for line in f:
|
|
match = pattern.match(line)
|
|
if match:
|
|
return match.group(2)
|
|
raise Exception(f"Could not determine version from {file}")
|
|
|
|
|
|
def update_version(file, pattern, new_version):
|
|
with fileinput.input(files=(file,), inplace=True) as f:
|
|
for line in f:
|
|
print(pattern.sub(f"\\g<1>{new_version}\\g<3>", line, count=1), end='')
|
|
|
|
|
|
PODSPEC_PATTERN = re.compile(r"^(.*\.version\s+=\s+')(.*)(')")
|
|
GRADLE_PATTERN = re.compile(r'^(\s+version\s+=\s+")(.*)(")')
|
|
NODE_PATTERN = re.compile(r'^(\s+"version": ")(.*)(")')
|
|
CARGO_PATTERN = re.compile(r'^(version = ")(.*)(")')
|
|
|
|
|
|
def bridge_path(bridge):
|
|
return os.path.join('rust', 'bridge', bridge, 'Cargo.toml')
|
|
|
|
|
|
def main():
|
|
os.chdir(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
|
|
|
|
if len(sys.argv) > 1:
|
|
new_version = sys.argv[1]
|
|
if new_version[0] == 'v':
|
|
new_version = new_version[1:]
|
|
update_version('LibSignalClient.podspec', PODSPEC_PATTERN, new_version)
|
|
update_version(os.path.join('java', 'build.gradle'), GRADLE_PATTERN, new_version)
|
|
update_version(os.path.join('node', 'package.json'), NODE_PATTERN, new_version)
|
|
update_version(bridge_path('ffi'), CARGO_PATTERN, new_version)
|
|
update_version(bridge_path('jni'), CARGO_PATTERN, new_version)
|
|
update_version(bridge_path('node'), CARGO_PATTERN, new_version)
|
|
return 0
|
|
|
|
package_versions = {
|
|
'swift': read_version('LibSignalClient.podspec', PODSPEC_PATTERN),
|
|
'java': read_version(os.path.join('java', 'build.gradle'), GRADLE_PATTERN),
|
|
'node': read_version(os.path.join('node', 'package.json'), NODE_PATTERN)
|
|
}
|
|
|
|
bridge_versions = {
|
|
'swift': read_version(bridge_path('ffi'), CARGO_PATTERN),
|
|
'java': read_version(bridge_path('jni'), CARGO_PATTERN),
|
|
'node': read_version(bridge_path('node'), CARGO_PATTERN),
|
|
}
|
|
|
|
for bridge in package_versions:
|
|
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]))
|
|
return 1
|
|
|
|
return 0
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|