from pathlib import Path
import base64, json, re, zipfile
root=Path(__file__).resolve().parent
out=root/'dist'
routes=['index','colectii','produse','despre','contact','cos','termeni','confidentialitate','cookies','livrare']
ids=['berbec','taur','gemeni','rac','leu','fecioara','balanta','scorpion','sagetator','capricorn','varsator','pesti','abundenta','protectie','alchimistul']
routes+=['parfum-'+s for s in ids]
head='''<!doctype html><html lang="ro"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="Esențe Astrale — parfumuri create ca ritualuri olfactive, inspirate de astrologie, arhetipuri și intenții."><meta name="robots" content="noindex,nofollow"><meta name="theme-color" content="#08070b"><title>Esențe Astrale | Parfumuri inspirate de astre</title>'''
body='<div id="app"></div><noscript>Activează JavaScript pentru a explora colecțiile și coșul Esențe Astrale.</noscript>'
for route in routes:
 (out/(route+'.html')).write_text(head+'<link rel="stylesheet" href="assets/style.css"></head><body>'+body+'<script src="assets/catalog.js"></script><script src="assets/app.js"></script></body></html>',encoding='utf8')
assets={ 'assets/'+n:'data:image/png;base64,'+base64.b64encode((out/'assets'/n).read_bytes()).decode() for n in ['logo.png','parfum-cosmic.png']}
standalone=head+'<style>'+(out/'assets/style.css').read_text()+'</style></head><body>'+body+'<script>window.EA_SINGLE=true;window.EA_ASSETS='+json.dumps(assets)+';</script><script>'+(out/'assets/catalog.js').read_text()+'</script><script>'+(out/'assets/app.js').read_text()+'</script></body></html>'
(root.parent/'Esente-Astrale-Previzualizare.html').write_text(standalone,encoding='utf8')
with zipfile.ZipFile(root.parent/'Esente-Astrale-Site-Complet.zip','w',zipfile.ZIP_DEFLATED) as z:
 for p in out.rglob('*'):
  if p.is_file() and not p.name.startswith('qa-'):z.write(p,'esente-astrale/'+str(p.relative_to(out)))
 for name in ['README.md','INTEGRARE.md','build.py']:
  z.write(root/name,'esente-astrale-surse/'+name)
 # Reproducible source layout, while site files above remain immediately deployable.
 for p in out.rglob('*'):
  if p.is_file() and not p.name.startswith('qa-'):z.write(p,'esente-astrale-surse/dist/'+str(p.relative_to(out)))
print('25 pagini HTML, versiune autonomă și arhivă create.')
