#!/usr/bin/env node
/**
 * After npm install, compile workspace packages so dev:api can import dist/ exports.
 * Skip in CI when explicitly disabled.
 */
import { execSync } from "node:child_process";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";

import {
  MIN_NODE_MAJOR,
  detectMixedPlatformInstall,
  missingNativeCssPackages,
  nodeVersionMessage,
} from "./platform-hints.mjs";

if (process.env.SKIP_POSTINSTALL_BUILD === "1") {
  process.exit(0);
}

const root = join(dirname(fileURLToPath(import.meta.url)), "..");
const nodeMajor = Number(process.versions.node.split(".")[0]);
if (!Number.isFinite(nodeMajor) || nodeMajor < MIN_NODE_MAJOR) {
  console.warn(`[postinstall] ${nodeVersionMessage(process.versions.node)} Skipping build.`);
  process.exit(0);
}

const mixedInstall = detectMixedPlatformInstall(root);
if (mixedInstall) {
  console.warn(`[postinstall] warning: ${mixedInstall}`);
}

for (const pkg of missingNativeCssPackages(root)) {
  console.warn(
    `[postinstall] warning: ${pkg} missing — if Next/Tailwind fails later, ` +
      "remove node_modules and run npm install on this OS.",
  );
}

try {
  execSync("node scripts/seed-dtc-growth-demo.mjs", {
    cwd: root,
    stdio: "inherit",
    env: { ...process.env, SKIP_DTC_GROWTH_REGISTER: "1" },
    shell: true,
  });
} catch {
  console.warn(
    "[postinstall] DTC Growth fixture generation failed — run `npm run seed:dtc-growth-demo` manually.",
  );
}

try {
  execSync("npm run build", {
    cwd: root,
    stdio: "inherit",
    env: process.env,
    shell: true,
  });
} catch {
  console.warn(
    "[postinstall] build failed — run `npm run build` manually before `npm run dev:api`.",
  );
  process.exit(0);
}