import pathlib,hashlib,shutil,subprocess,time,urllib.request,json,datetime base=pathlib.Path('/www/dk_project/dk_app/trilium');src=pathlib.Path('/tmp/trilium-korean-phase9-fix');h=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() assert h(base/'patched/main.cjs')==h(src/'before.cjs') backup=base/'backups'/('before-api-swagger-fix-'+datetime.datetime.now().strftime('%Y%m%d-%H%M%S'));backup.mkdir(mode=0o700);shutil.copy2(base/'patched/main.cjs',backup/'main.cjs') shutil.copytree(src/'swagger',base/'i18n_ko/doc_notes/en/api-ko/swagger',dirs_exist_ok=False) (base/'i18n_ko/doc_notes/en/api-ko/swagger').chmod(0o755) for p in (base/'i18n_ko/doc_notes/en/api-ko/swagger').iterdir():p.chmod(0o644) (base/'patched/main.cjs').write_bytes((src/'main.cjs').read_bytes());subprocess.run(['docker','restart','trilium'],check=True) for i in range(40): try: with urllib.request.urlopen('http://127.0.0.1:18082/etapi/docs/swagger-ui-bundle.js',timeout=3) as r:assert hashlib.sha256(r.read()).hexdigest()==h(src/'swagger/swagger-ui-bundle.js') break except Exception: if i==39:raise time.sleep(1) result={'status':'verified','backup':str(backup),'swaggerVersion':'5.21.0','mainSha256':h(base/'patched/main.cjs')};(base/'i18n_ko/phase9-swagger-result.json').write_text(json.dumps(result));print(json.dumps(result))