Files

22 lines
1.8 KiB
Python

import pathlib,hashlib,shutil,subprocess,time,urllib.request,json,datetime
b=pathlib.Path('/www/dk_project/dk_app/trilium');s=pathlib.Path('/tmp/trilium-api-final');h=lambda p:hashlib.sha256(p.read_bytes()).hexdigest()
assert h(b/'patched/main.cjs')==h(s/'before.cjs')
backup=b/'backups'/('before-api-final-'+datetime.datetime.now().strftime('%Y%m%d-%H%M%S'));backup.mkdir(mode=0o700)
for n,target in [('main.cjs','patched/main.cjs'),('etapi.json','i18n_ko/doc_notes/en/api-ko/etapi.json'),('internal.json','i18n_ko/doc_notes/en/api-ko/internal.json')]:shutil.copy2(b/target,backup/n);(b/target).write_bytes((s/n).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(b/'i18n_ko/doc_notes/en/api-ko/swagger/swagger-ui-bundle.js')
break
except Exception:
if i==39:raise
time.sleep(1)
checks=[]
for rel in ['etapi.json','internal.json','frontend.html','fnote.html','backend.html']:
with urllib.request.urlopen('http://127.0.0.1:18082/assets/v0.95.0-ko-20260913-r8/doc_notes/en/api-ko/'+rel,timeout=5) as r:assert hashlib.sha256(r.read()).hexdigest()==h(b/'i18n_ko/doc_notes/en/api-ko'/rel)
checks.append(rel)
for route in ['etapi','api']:
with urllib.request.urlopen('http://127.0.0.1:18082/'+route+'/docs/',timeout=5) as r:assert '참고 자료' in r.read().decode()
with urllib.request.urlopen('http://127.0.0.1:18082/'+route+'/docs/swagger-ui-init.js',timeout=5) as r:assert '설명' in r.read().decode()
result={'status':'verified','backup':str(backup),'pages':checks,'swaggerVersion':'5.21.0','mainSha256':h(b/'patched/main.cjs')};(b/'i18n_ko/phase9-final-result.json').write_text(json.dumps(result));print(json.dumps(result))