Files
kefu/deploy/ui-performance-20260916/apply.py
T
2026-09-21 10:34:06 +08:00

21 lines
1.2 KiB
Python

from pathlib import Path
import hashlib,json,shutil,ast
folder=Path(__file__).resolve().parent;payload=folder/'payload';target=Path('C:/wechat_rpa').resolve()
sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest()
previous={r['path']:r['before_sha256'] for r in json.loads((folder/'before.json').read_text())}
paths=[p for p in payload.rglob('*') if p.is_file()]
for p in paths:
rel=p.relative_to(payload).as_posix();dest=(target/rel).resolve();assert dest.is_relative_to(target)
assert (sha(dest) if dest.exists() else None)==previous.get(rel),rel
if p.suffix=='.py':ast.parse(p.read_text(encoding='utf-8'))
backup=target/'backups/ui-performance-20260916';backup.mkdir(parents=True,exist_ok=False)
rows=[]
for p in paths:
rel=p.relative_to(payload).as_posix();dest=target/rel
if dest.exists():
saved=backup/rel;saved.parent.mkdir(parents=True,exist_ok=True);shutil.copyfile(dest,saved)
dest.parent.mkdir(parents=True,exist_ok=True);shutil.copyfile(p,dest)
rows.append({'path':rel,'before_sha256':previous.get(rel),'sha256':sha(dest)})
(folder/'applied.json').write_text(json.dumps({'backup':str(backup),'manifest':rows},indent=2),encoding='utf-8')
print('Applied',len(rows),'files. Backup:',backup)