/**
 * Step 0 — Verificar Python (informativo, nao bloqueante)
 */

const { execSync } = require("child_process");
const { R, B, DIM, AMBER, TEAL } = require("../colors");
const { stepHeader, ok, warn, info } = require("../banner");

function detectarPython() {
  const candidatos = ["python3", "python", "py"];
  for (const cmd of candidatos) {
    try {
      const resultado = execSync(`${cmd} --version 2>&1`, {
        encoding: "utf8",
        timeout: 5000,
      }).trim();
      const match = resultado.match(/Python (\d+)\.(\d+)/);
      if (match) {
        const major = parseInt(match[1]);
        const minor = parseInt(match[2]);
        if (major === 3 && minor >= 8) {
          return { cmd, version: `${major}.${minor}` };
        }
      }
    } catch (_) {}
  }
  return null;
}

function checkPython() {
  stepHeader(1, 5, "Verificando ambiente");

  const python = detectarPython();
  if (python) {
    ok(`Python ${python.version} detectado ${DIM}(${python.cmd})${R}`);
    info(`${DIM}Necessario para rodar o servidor MCP (modo serve)${R}`);
  } else {
    warn(`${AMBER}Python 3.8+ nao encontrado${R}`);
    info(`${DIM}O wizard funciona sem Python, mas o servidor MCP precisa dele.${R}`);
    info(`${DIM}Instale depois: ${TEAL}https://python.org/downloads${R}`);
  }

  return python;
}

module.exports = { checkPython, detectarPython };
