#!/usr/bin/env node
/**
 * 将 MVFrame 包内 `.cursor/rules/*.mdc` 补充到目标工程的 `.cursor/rules/`。
 * 若宿主项目已存在同名规则文件，则保留宿主文件，不覆盖。
 *
 * 用法：
 *   node path/to/mvframe/scripts/install-cursor-rules.js
 *   node path/to/mvframe/scripts/install-cursor-rules.js /abs/path/to/your-project
 *
 * 环境变量（可选）：
 *   MVFRAME_CURSOR_RULES_OUT=/path/to/project  等价于第一个参数
 */

const fs = require("fs");
const path = require("path");

function installCursorRules(projectRoot) {
  const targetRoot = path.resolve(projectRoot);
  const rulesSrc = path.join(__dirname, "..", ".cursor", "rules");

  if (!fs.existsSync(rulesSrc)) {
    console.warn(
      "[mvframe] 未找到包内 .cursor/rules（请使用含该目录的 mvframe 版本），跳过 Cursor 规则复制",
    );
    return;
  }

  const entries = fs.readdirSync(rulesSrc, { withFileTypes: true });
  for (const ent of entries) {
    if (!ent.isFile() || !ent.name.endsWith(".mdc")) continue;
    const src = path.join(rulesSrc, ent.name);
    const dest = path.join(targetRoot, ".cursor", "rules", ent.name);
    fs.mkdirSync(path.dirname(dest), { recursive: true });
    if (fs.existsSync(dest)) {
      console.log("[mvframe] 已存在 Cursor 规则，跳过：");
      console.log("  ", dest);
      continue;
    }
    fs.copyFileSync(src, dest);
    console.log("[mvframe] 已写入 Cursor 规则：");
    console.log("  ", dest);
  }

  console.log("[mvframe] Cursor 打开该项目后会读取 .cursor/rules/*.mdc。");
}

function main() {
  const argPath = process.argv.find((a, i) => i >= 2 && !a.startsWith("--"));
  const projectRoot = path.resolve(
    process.env.MVFRAME_CURSOR_RULES_OUT || argPath || process.cwd(),
  );

  if (!fs.existsSync(projectRoot)) {
    console.error("[mvframe] 目录不存在:", projectRoot);
    process.exit(1);
  }

  installCursorRules(projectRoot);
}

if (require.main === module) {
  main();
}

module.exports = {
  installCursorRules,
};
