mirror of
https://git.um-react.app/um/lib_um_crypto_rust.git
synced 2026-03-08 04:29:54 +00:00
45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
import argparse
|
|
import glob
|
|
import re
|
|
from typing import Generator
|
|
|
|
|
|
def parse_version(text: str) -> str:
|
|
re_version = re.compile(r'^\d+\.\d+\.\d+(-[-a-zA-Z\d]*)?$')
|
|
if not re_version.match(text):
|
|
raise argparse.ArgumentTypeError(f"Invalid version format: '{text}'")
|
|
return text
|
|
|
|
def iter_cargo_toml_paths() -> Generator[str, None, None]:
|
|
yield "um_audio/Cargo.toml"
|
|
yield "um_wasm/Cargo.toml"
|
|
yield "um_cli/Cargo.toml"
|
|
for p in glob.iglob("um_crypto/*/Cargo.toml", recursive=False):
|
|
yield p
|
|
|
|
def re_replace_file(path: str, regex: re.Pattern, replacement: str) -> None:
|
|
print(f"Bumping {path}...")
|
|
with open(path, "r", encoding='utf-8') as f:
|
|
content = f.read()
|
|
content = regex.sub(replacement, content, 1)
|
|
with open(path, "w", encoding='utf-8', newline='\n') as f:
|
|
f.write(content)
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser (description="Bump versions")
|
|
parser.add_argument("version", type=parse_version, help="Version to bump to")
|
|
args = parser.parse_args()
|
|
|
|
re_toml_version = re.compile(r'^\s*(version|"version"|\'version\')\s*=\s*.*$', re.MULTILINE)
|
|
re_json_version = re.compile(r'^(\s*)"version"\s*:\s*".*?"\s*(,)?\s*$', re.MULTILINE)
|
|
|
|
for path in iter_cargo_toml_paths():
|
|
re_replace_file(path, re_toml_version, f'version = "{args.version}"')
|
|
re_replace_file("um_wasm_loader/package.json", re_json_version, fr'\1"version": "{args.version}"\2')
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|