import { spawn } from "node:child_process"; import { existsSync } from "node:fs"; import { copyFile, mkdir } from "node:fs/promises"; import { prepareAssets } from "./assets.mjs"; if (!existsSync(".env.local")) await copyFile(".env.example", ".env.local"); await mkdir(".data", { recursive: true }); await mkdir("public/generated", { recursive: true }); await mkdir("public/tools/mod", { recursive: true }); await mkdir("public/tools/plugin", { recursive: true }); // Prepare terrain assets even if browser installation subsequently fails. await prepareAssets(); await new Promise((resolve, reject) => { const p = spawn( process.execPath, ["node_modules/playwright/cli.js", "install", "chromium"], { stdio: "inherit" }, ); p.on("exit", (code) => code === 0 ? resolve() : reject(new Error(`Chromium installation exited ${code}`)), ); }); process.loadEnvFile(".env.local"); const configured = Boolean( process.env.NEXT_PUBLIC_SUPABASE_URL && process.env.SUPABASE_SECRET_KEY && process.env.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, ); console.log( configured ? "Supabase configuration present. Apply the checked-in migration before starting." : "Supabase is not configured. Fill the URL, publishable key and server secret in .env.local before starting MineGeo.", );