mirror of
https://github.com/flectar/mail.git
synced 2026-11-12 10:15:19 +00:00
fix(android): share signing identity across all release channels
This commit is contained in:
1 parent
d9992b8dfa
commit
eaa75d7e44
19 files changed
+843
-210
No files matched your search
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Derive one Android version sequence for every release channel and workflow."""
|
||||
|
||||
import argparse
|
||||
import re
|
||||
|
||||
|
||||
def version_code(version: str) -> int:
|
||||
match = re.fullmatch(
|
||||
r"(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)"
|
||||
r"(?:-(alpha|beta|rc)\.([1-9][0-9]*))?",
|
||||
version,
|
||||
)
|
||||
if not match:
|
||||
raise ValueError("Android versions must be X.Y.Z or X.Y.Z-{alpha,beta,rc}.N")
|
||||
major, minor, patch = map(int, match.group(1, 2, 3))
|
||||
stage, number = match.group(4, 5)
|
||||
if major > 20 or minor > 99 or patch > 99 or (number and int(number) > 999):
|
||||
raise ValueError("Android versions support major 0–20, minor/patch 0–99, and prerelease 1–999")
|
||||
# Reserve 10,000 codes for each patch. This stays below Play's 2.1B limit.
|
||||
# alpha.999 < beta.1 < rc.1 < stable < next patch's alpha.1.
|
||||
suffix = {"alpha": 0, "beta": 1000, "rc": 2000}.get(stage, 9999)
|
||||
return major * 100_000_000 + minor * 1_000_000 + patch * 10_000 + suffix + int(number or 0)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("version")
|
||||
args = parser.parse_args()
|
||||
try:
|
||||
print(version_code(args.version))
|
||||
except ValueError as error:
|
||||
raise SystemExit(str(error)) from error
|
||||
Reference in new issue
Block a user