Files
MineGeo/scripts/setup.mjs

35 lines
1.3 KiB
JavaScript

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.",
);