#!/usr/bin/env node
/** Validates hospitality frontend routes exist and import paths resolve. */
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";

const ROOT = path.join(path.dirname(fileURLToPath(import.meta.url)), "..");
const APP = path.join(ROOT, "app", "hospitality");
const FEATURES = path.join(ROOT, "modules", "hospitality", "features");

let errors = 0;

function walk(dir, acc = []) {
  if (!fs.existsSync(dir)) return acc;
  for (const e of fs.readdirSync(dir)) {
    const full = path.join(dir, e);
    if (fs.statSync(full).isDirectory()) walk(full, acc);
    else if (e === "page.tsx") acc.push(full);
  }
  return acc;
}

for (const page of walk(APP)) {
  const content = fs.readFileSync(page, "utf8");
  const m = content.match(/features\/([^"']+)/);
  if (!m) {
    console.error("Missing feature import:", page);
    errors++;
    continue;
  }
  const featureFile = path.join(FEATURES, `${m[1]}.tsx`);
  if (!fs.existsSync(featureFile)) {
    console.error("Missing feature file:", featureFile, "for", page);
    errors++;
  }
}

const required = [
  "modules/hospitality/services/hospitality-api.ts",
  "app/api/hospitality/[...path]/route.ts",
  "modules/hospitality/components/HospitalityPortalShell.tsx",
];

for (const f of required) {
  if (!fs.existsSync(path.join(ROOT, f))) {
    console.error("Missing required:", f);
    errors++;
  }
}

if (errors) {
  console.error(`Hospitality validation failed: ${errors} error(s)`);
  process.exit(1);
}
console.log(`Hospitality validation passed (${walk(APP).length} routes)`);
