/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call -- Node.js build script; imports are safe */
import { execSync } from "node:child_process";
import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
import { resolve, dirname } from "node:path";
import { fileURLToPath } from "node:url";

const __filename: string = fileURLToPath(import.meta.url);
const __dirname: string = dirname(__filename);

const root: string = resolve(__dirname, "..");
const distDir: string = resolve(root, "dist");
const outCss: string = resolve(distDir, "styles.css");
const stylesTsPath: string = resolve(root, "src/styles/styles-css.ts");

// Ensure dist/ exists
mkdirSync(distDir, { recursive: true });

// Compile globals.css → dist/styles.css using @tailwindcss/cli
execSync(
  `npx @tailwindcss/cli -i src/styles/globals.css -o dist/styles.css --minify`,
  { cwd: root, stdio: "inherit" }
);

// Read compiled CSS and write as TS string constant
const css: string = readFileSync(outCss, "utf-8");
const escaped: string = css.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$/g, "\\$");
writeFileSync(
  stylesTsPath,
  `export const STYLES_CSS = \`${escaped}\`;\n`
);

// eslint-disable-next-line no-console -- Build script output
console.log("Built dist/styles.css and src/styles/styles-css.ts");
