Files
IKAR/tool/publish_pi_release.py
T

18 lines
1.2 KiB
Python

from pathlib import Path
import datetime, hashlib, json, os, re, sys
path=Path('/mnt/data/ikar_server/shared/data/AppUpdates/Android')
assert os.path.ismount('/mnt/data') and path.resolve().is_relative_to(Path('/mnt/data/ikar_server'))
apk=path/'ikar-android-1.apk'
staged=path/'ikar-android-1.apk.next'
expected=sys.argv[1].lower()
assert re.fullmatch(r'[0-9a-f]{64}',expected), 'Expected APK SHA-256 is required'
assert hashlib.sha256(staged.read_bytes()).hexdigest()==expected
os.chown(staged,1000,1000)
os.replace(staged,apk)
metadata=path/'latest.json'
staged_metadata=path/'latest.json.next'
staged_metadata.write_text(json.dumps({'versionCode':1,'versionName':'1.0.0','packageFileName':apk.name,'publishedAt':datetime.datetime.now(datetime.timezone.utc).isoformat(),'notes':'ИКАР: собственный сервер, сообщения, группы, каналы, звонки, файлы, голосовые сообщения, стикеры и отложенная отправка.'},ensure_ascii=False))
os.chown(staged_metadata,1000,1000)
os.replace(staged_metadata,metadata)
print(json.dumps({'version':'1.0.0+1','sha256':expected,'bytes':apk.stat().st_size}))