import path from "node:path";

/**
 * جذر المشروع الحقيقي — إصلاح حرج لمسار التحديث الذاتي:
 *
 * خادم Next.js المستقل (.next/standalone/server.js) ينفّذ
 * `process.chdir(__dirname)` عند الإقلاع، فيصبح مجلد العمل
 * `.next/standalone` بدلاً من جذر المشروع. أي قراءة/كتابة تعتمد
 * process.cwd() داخل مسارات API ستفشل بصمت أو تكتب في المكان الخطأ
 * (هذا هو سبب فشل التحديث الذاتي السابق بصمت).
 *
 * القاعدة: إن كان cwd داخل .next/standalone فالجذر الحقيقي أعلى بمستويين.
 */
export function projectRoot(): string {
  const cwd = process.cwd();
  const base = path.basename(cwd);
  const parentName = path.basename(path.resolve(cwd, ".."));
  if (base === "standalone" && parentName === ".next") {
    return path.resolve(cwd, "..", "..");
  }
  return cwd;
}

/** يتحقق أن الجذر يبدو مشروعاً حقيقياً (يحتوي scripts/ و version.json) */
export function ensureProjectRoot(): string {
  // eslint-disable-next-line @typescript-eslint/no-require-imports
  const fs = require("node:fs") as typeof import("node:fs");
  const root = projectRoot();
  if (!fs.existsSync(path.join(root, "scripts"))) {
    // احتياط نادر: عد للسير للأعلى حتى نجد scripts/
    let cur = root;
    for (let i = 0; i < 3; i++) {
      cur = path.resolve(cur, "..");
      if (fs.existsSync(path.join(cur, "scripts"))) return cur;
    }
  }
  return root;
}
