from pathlib import Path
import base64,json,sys

here=Path(__file__).resolve().parent
target=here.parent
fonts=here/'fontlar'
fonts.mkdir(exist_ok=True)
if len(sys.argv)>1:
    from fontTools import subset
    for style in ['Regular','Bold']:
        path=Path(sys.argv[1])/'data/fonts'/f'Lato-{style}.ttf'
        opts=subset.Options();opts.flavor='woff2'
        font=subset.load_font(str(path),opts)
        sub=subset.Subsetter(options=opts)
        sub.populate(unicodes=list(range(0x500))+list(range(0x2000,0x2070))+[0x2212,0x2190,0x2192])
        sub.subset(font)
        subset.save_font(font,str(fonts/f'Lato-{style}.woff2'),opts)
css=''
for style,weight in [('Regular',400),('Bold',700)]:
    raw=base64.b64encode((fonts/f'Lato-{style}.woff2').read_bytes()).decode()
    css+=f"@font-face{{font-family:Lato;font-style:normal;font-weight:{weight};font-display:swap;src:url(data:font/woff2;base64,{raw}) format('woff2')}}"
html=(here/'sablon.html').read_text()
html=html.replace('/*FONT_CSS*/',css).replace('/*APP_CSS*/',(here/'stil.css').read_text())
html=html.replace('/*APP_JS*/',(here/'harita.js').read_text())
for placeholder,filename in [('/*ROUTE_DATA*/','rota_verisi.json'),('/*TRANSLATIONS*/','diller.json')]:
    data=json.loads((here/filename).read_text())
    serialized=json.dumps(data,ensure_ascii=False,separators=(',',':')).replace('</','<\\/')
    html=html.replace(placeholder,serialized)
assert '/*APP_' not in html and len(json.loads((here/'diller.json').read_text()))==5
(target/'harita.html').write_text(html,encoding='utf-8')
print('Standalone HTML built:',(target/'harita.html').stat().st_size,'bytes')
