32 lines
2.0 KiB
Python
32 lines
2.0 KiB
Python
from pathlib import Path
|
|
import hashlib,json,re,subprocess
|
|
root=Path(__file__).resolve().parent.parent
|
|
work=root/'.local/canvas-union-ytr83r-20260911'
|
|
commit='0c53c210306d768fc8b1ae6cee3618701c887bb6'
|
|
assert subprocess.check_output(['git','rev-parse','HEAD'],cwd=work).decode().strip()==commit
|
|
pub=root/'.local/canvas-repair-publication-20260912';pub.mkdir(exist_ok=False)
|
|
base='http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/'+commit+'/'
|
|
validation=work/'harness/release-canvas-repair-validation-20260912.md'
|
|
s=validation.read_text(encoding='utf-8')
|
|
def link(m):
|
|
target=m.group(2)
|
|
if '://' in target or target.startswith('#'):return m.group(0)
|
|
path=(validation.parent/target).resolve();rel=path.relative_to(work.resolve()).as_posix()
|
|
assert path.exists(),rel
|
|
return '['+m.group(1)+']('+base+rel+')'
|
|
s=re.sub(r'\[([^\]]+)\]\(([^)]+)\)',link,s)
|
|
with (pub/'VALIDATION.md').open('x',encoding='utf-8',newline='\n') as f:f.write(s)
|
|
notes=(root/'.local/canvas-repair-release-notes-final.md').read_text(encoding='utf-8')
|
|
assert notes.count('EVIDENCE_URL')==1
|
|
notes=notes.replace('EVIDENCE_URL',base+'harness/release-canvas-repair-validation-20260912.md')
|
|
assert 'PENDING' not in notes and 'EVIDENCE_URL' not in notes
|
|
with (pub/'release-notes.md').open('x',encoding='utf-8',newline='\n') as f:f.write(notes)
|
|
dist=root/'.local/native-repair-union-33e30c1-r2/dist'
|
|
name='ArcadiaStudio-0.2.0-preview.canvas-repair.20260912-x86_64-pc-windows-gnullvm.zip'
|
|
assets=[]
|
|
for p in [dist/name,dist/(name+'.sha256'),pub/'VALIDATION.md']:
|
|
data=p.read_bytes();assets.append({'name':p.name,'local_path':str(p),'bytes':len(data),'sha256':hashlib.sha256(data).hexdigest()})
|
|
record={'evidence_commit':commit,'tag':'v0.2.0-preview.canvas-repair.20260912','source_commit':'33e30c1cd7a6c99513a0ebd02ba68fccbad8f58d','tag_commit':'33e30c1cd7a6c99513a0ebd02ba68fccbad8f58d','assets':assets}
|
|
with (pub/'local-assets.json').open('x',encoding='utf-8') as f:json.dump(record,f,indent=2)
|
|
print(json.dumps(record))
|