- Move all 39 cloned pages + assets into public/ (Astro copies verbatim to dist/) -> dist/ is byte-identical to www.mitsuthailand.com (home 143633 bytes exact) - Add Astro project: astro.config.mjs, package.json, src/layouts/Base.astro, src/pages/example.astro (sample Astro component page, builds to /example/) - Multi-stage Dockerfile: pnpm build -> nginx serve + env-injecting entrypoint - Env-configurable: GA_ID, FORM_EMAIL, GMAP_LAT/LNG/.env.example - Remove Python crawl tooling and old nginx-static site/ layout - Verified: astro build -> 39 pages + example; all routes serve 200 via preview
66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Generate Astro pages from the static clone.
|
|
|
|
Approach: Astro supports placing .html files directly under src/pages/ — building
|
|
copies them to dist/ verbatim (output identical to the original site). We copy
|
|
every cloned page's HTML into src/pages/ preserving its route, and copy all
|
|
non-HTML assets into public/ (Astro copies public/ -> dist/).
|
|
|
|
This gives a real Astro project (astro build -> dist/) whose output matches the
|
|
original website exactly, while all assets are self-hosted and URLs relative.
|
|
|
|
Run from repo root.
|
|
"""
|
|
import os, shutil
|
|
|
|
ROOT = os.path.dirname(os.path.abspath(__file__))
|
|
SOURCE = os.path.join(ROOT, "site")
|
|
PAGES = os.path.join(ROOT, "src", "pages")
|
|
ASSETS = os.path.join(ROOT, "public")
|
|
BUILD = os.path.join(ROOT, "dist")
|
|
|
|
# remove sample astro page
|
|
sample = os.path.join(PAGES, "index.astro")
|
|
if os.path.exists(sample):
|
|
os.remove(sample)
|
|
|
|
def main():
|
|
os.makedirs(PAGES, exist_ok=True)
|
|
os.makedirs(ASSETS, exist_ok=True)
|
|
|
|
# 1. Copy all assets (non-index.html) into public/ preserving structure
|
|
copied = 0
|
|
for dp, dns, fns in os.walk(SOURCE):
|
|
for fn in fns:
|
|
if fn == "index.html":
|
|
continue
|
|
src = os.path.join(dp, fn)
|
|
rel = os.path.relpath(src, SOURCE)
|
|
dst = os.path.join(ASSETS, rel)
|
|
os.makedirs(os.path.dirname(dst), exist_ok=True)
|
|
shutil.copy2(src, dst)
|
|
copied += 1
|
|
print(f"Copied {copied} asset files into public/")
|
|
|
|
# 2. Copy each page's HTML into src/pages/ preserving route as .html
|
|
gen = 0
|
|
for dp, dns, fns in os.walk(SOURCE):
|
|
if "index.html" not in fns:
|
|
continue
|
|
html_src = os.path.join(dp, "index.html")
|
|
rel_dir = os.path.relpath(os.path.dirname(html_src), SOURCE)
|
|
if rel_dir == ".":
|
|
page_rel = "index.html"
|
|
else:
|
|
page_rel = rel_dir + ".html" # e.g. catalog/item/X.html, catalog.html
|
|
page_dst = os.path.join(PAGES, page_rel)
|
|
os.makedirs(os.path.dirname(page_dst), exist_ok=True)
|
|
shutil.copy2(html_src, page_dst)
|
|
gen += 1
|
|
print(f" {page_rel}")
|
|
print(f"\nGenerated {gen} html pages under src/pages/")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|