18 lines
1.2 KiB
Python
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}))
|